我在哪里放置axis2.xml以供具有soap客户端的jar读取?

时间:2011-06-08 20:30:12

标签: java axis2

我在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直接发送到服务器。

1 个答案:

答案 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);

我认为你得到了我所说的要点。希望有所帮助! (: