2010-07-18 2 views
3

У меня есть файл jar, который я запускаю. Это сервер Selenium RC. Я хочу иметь возможность изменять значения JVM httpProxy.host/port/etc. С одной стороны, я могу изменить источник и добавить эту функцию. Потребовалось бы некоторое время. Есть ли еще один способ сделать это? Как и мой собственный JAR (который установил эти свойства JVM), вызывается selenium-rc внутри того же самого экземпляра JVM (таким образом, он сможет изменять значения переменной JVM)?Java: Изменение свойств системы через время выполнения

ответ

5

Вы можете определить свойства системы в командной строке, используя

-DpropertyName=propertyValue 

Таким образом, вы могли бы написать

java -jar selenium-rc.jar -Dhttp.proxyHost=YourProxyHost -Dhttp.proxyPort=YourProxyPort 

См Java - the java application launcher,

EDIT:

Вы можете написать которая является приложением. Легко эмулировать вызов метода main в классе с использованием отражения. Затем вы можете установить свойства системы через System.setProperty перед запуском окончательного приложения. Например,

public class AppWrapper 
{ 
/* args[0] - class to launch */  
    public static void main(String[] args) throws Exception 
    { // error checking omitted for brevity 
     Class app = Class.forName(args[0]); 
     Method main = app.getDeclaredMethod("main", new Class[] { (new String[1]).getClass()}); 
     String[] appArgs = new String[args.length-1]; 
     System.arraycopy(args, 1, appArgs, 0, appArgs.length); 
     System.setProperty("http.proxyHost", "someHost"); 
     main.invoke(null, appArgs); 
    } 
} 
+0

Я знаю, но я хочу сделать это во время выполнения ... не во время запуска. Спасибо, хотя ..... – Zombies

+0

Хорошо, вопрос не слишком четко о том, чего вы хотите достичь. Сдвиг кажется суровым. – mdma

+0

Я повернул это вниз-голос вверх тормашками :) – Zombies

2

Используйте метод System.setProperty().

+0

Я знаю ... Я хочу сделать это без необходимости изменения selenium-rc. – Zombies

+1

Вы пробовали это в своем коде? Вам не нужно изменять Selenium RC. Учитывая, что существующий клиентский код (который запускает Selenium RC) работает в одной JVM, установка системного свойства действительно будет работать. – yclian

+0

OH !? Я не знал, что клиент также работает в одной JVM. Но это может помешать работе с клиентом, не попытается ли клиент подключиться через удаленный (и более медленный) прокси-сервер до (пытается) подключиться обратно к селену-rc? – Zombies

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