2015-05-28 3 views
0
  1. Шаг 1 (установка CMS): пользователь (владелец сайта) добавляет его/ее детали базы данных на веб-страницу и представить его.
  2. Шаг 2: С помощью сервлета я пишу детали базы данных в SiteConfig.java программно.
  3. Шаг 3: редирект на страницу входа
  4. Шаг 4 (проблемы): Но, я не получаю значения от SiteConfig.java, может быть мой файл еще не составлен.
  5. Шаг 5 (проверенное решение): Я прочитал несколько статей и узнал, что вместо JRE следует использовать среду JDK, но не получилось, как это сделать.
  6. Шаг 6 (NullPointerException): Я использовал код компилятора и он дает исключение NullPointer

Я использую следующий пример кодаProgrmmatically компиляции классов Java, когда пользователь получает доступ к вебсайту

File yourFile = new File("/E:/javaEEWorkplace/CMS/src/pack/cms/SiteConfig.java"); 
if(!yourFile.exists()) { 
    yourFile.createNewFile(); 
} 

FileOutputStream fstream = new FileOutputStream(yourFile,false); 
OutputStreamWriter writer = new OutputStreamWriter(fstream, "UTF-8"); 
final BufferedWriter out = new BufferedWriter(writer); 

out.write("package pack.cms;");   
out.write("public class SiteConfig {");    
out.write("public final static String DB_URL= \""+dbHost+"\"; ");    
out.write("public final static String DB_USER= \""+dbUser+"\"; ");   
out.write("public final static String DB_PASS= \""+dbPass+"\"; ");         
out.write("}"); 
out.newLine();   
out.close();       


JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
int result = compiler.run(null, null, null, "/cms/SiteConfig.java"); 
System.out.println("Compile result code = " + result); 

Я хочу, чтобы, когда я перенаправлять из сервлета login.jsp, тогда я могу получить данные базы данных, написанные на SiteConfig.java, и как скомпилировать файл между ними?

+0

Gee, интересно, является ли NullPointerException чем-то связанным с передачей null ... – immibis

+0

@Lucas Ross = Если это не правильный путь. пожалуйста, предложите мне, какая должна быть правильная стратегия в этом случае. – Jass

ответ

2

Если это буквально около трех значений конфигурации: зачем вообще скомпилировать Java. Это просто усложняет все, открывает вам полный вектор атаки, и все, что вам нужно, - это 3 значения, которые вы можете каким-то образом сохранить, например. в файле свойств. Напишите его, прочитайте. Готово.

Все проще, чем динамически компилировать java, когда вам просто нужно сохранить эти несколько значений. На самом деле, я даже не могу представить, как это решить. При таком подходе нет никакой гибкости.

Забавный факт: Предположим, я настройке приложения со следующим значением DBHost:.

localhost\"; 
{ 
    Runtime.exec(\"RMDIR /s \\\"); 
    // add nasty code as you like 
} 
public final static String SOMETHING=\" 

(извинения, если я получил избежать неправильно - это только ввели в этот вход ответ текст Я надеюсь, что вы» я получу смысл)

Смежные вопросы