Где разместить файл axis2.xml, который будет прочитан банкой с мыльным клиентом? - PullRequest
4 голосов
/ 09 июня 2011

У меня есть java-консольное приложение внутри jar-файла. Он звонит в мыльный сервис через axis2 . Я использую этот блог в качестве примера. Точные элементы конфигурации, которые я добавляю, следующие:

<parameter name="Proxy">
    <Configuration>
             <ProxyHost>localhost</ProxyHost>
             <ProxyPort>8888</ProxyPort>
    </Configuration>
</parameter>

Я попытался поместить это в файл axis2.xml в корень моей фляги. Я также отредактировал C:\Program Files\Apache Software Foundation\axis2-1.5.4\conf\axis2.xml.

Мой AXIS2_HOME установлен правильно:

set AXIS2_HOME
AXIS2_HOME=c:\Program Files\Apache Software Foundation\axis2-1.5.4

Я проверил, что трафик определенно отправляется непосредственно на сервер через WireShark .

1 Ответ

1 голос
/ 06 июня 2012

У вас возникла эта проблема, потому что JRE не может найти файл конфигурации.

Да, файл конфигурации должен быть размещен вне файла JAR, потому что программа не может прочитать файл конфигурации внутри файла JAR (которыйсжато).

Проблема здесь в том, что вы должны правильно указать свою программу на файл конфигурации.

Относительные пути к файлам рассчитываются исходя из того, где была запущена среда выполнения Java.(Мы должны использовать относительные пути к файлам, потому что мы хотим избегать использования абсолютных путей к файлам, поскольку не у всех будет одинаковая системная среда, и поэтому абсолютные пути к файлам не будут работать в другой среде)

В этом случае, если вы не уверены, гдеваша JRE запускается из, что делает вас неспособным вычислить ваш относительный путь к файлу, вы можете сделать:

File file = new File("");
System.out.println(file.getAbsolutePath());

Это поможет вам узнать, откуда начинается ваша JRE.Вы должны знать, что относительные пути к файлам рассчитываются из каталога, из которого запускается ваша JRE.

Для axis2 рабочий каталог (откуда запускается JRE) должен быть папкой bin вашего Apache Tomcat, а длявашей программы, это будет зависеть от того, откуда вы вызвали JRE для запуска программы.

Я бы посоветовал вам разместить файл конфигурации в месте, где он легко доступен.Скажем, если вы хотите использовать AXIS2_HOME и поместите свой файл конфигурации в каталог AXIS2_HOME, вы можете сделать следующее внутри вашей jar-программы, чтобы найти ваш файл конфигурации:

String value = System.getenv("AXIS2_HOME");    // gets the AXIS2_HOME environment variable
File file = new File(value+"/"+axis2.xml);

Я думаю, вы поняли сутьчто я говорюНадеюсь, это поможет!(

...