我在jar文件中有一个java控制台应用程序。它通过axis2拨打肥皂服务。我使用this blog作为示例。我添加的确切配置项如下:
<parameter name="Proxy">
<Configuration>
<ProxyHost>localhost</ProxyHost>
<ProxyPort>8888</ProxyPort>
</Configuration>
</parameter>
我尝试将它放在jar的根目录中的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直接发送到服务器。
答案 0 :(得分:1)
您遇到此问题,因为JRE无法找到配置文件。
是的,配置文件应放在jar文件之外,因为程序无法读取jar文件(压缩)中的配置文件。
这里的问题是您必须正确地将程序指向配置文件。
从Java Runtime Environment的启动位置计算相对文件路径。 (我们应该使用相对文件路径,因为我们希望避免使用绝对文件路径,因为不是每个人都有相同的系统环境,因此绝对文件路径不能在不同的环境中工作)
在这种情况下,如果您不确定JRE的起始位置,使您无法计算相对文件路径,则可以执行以下操作:
File file = new File("");
System.out.println(file.getAbsolutePath());
这将帮助您找到JRE的起始位置。您应该知道相对文件路径是从启动JRE的目录计算的。
对于axis2,工作目录(从中启动JRE的位置)应该是Apache Tomcat的bin文件夹,而对于您的程序,它将取决于您从哪里调用JRE来启动程序。< / p>
我建议您将配置文件放在易于访问的位置。 假设您要使用AXIS2_HOME,并将配置文件放在AXIS2_HOME目录中,则可以在jar程序中执行以下操作以查找配置文件:
String value = System.getenv("AXIS2_HOME"); // gets the AXIS2_HOME environment variable
File file = new File(value+"/"+axis2.xml);
我认为你得到了我所说的要点。希望有所帮助! (: