Axis2 + Tomcat:Web服务工作目录

时间:2012-09-20 10:54:30

标签: java axis2 tomcat7

所以我有一个Axis2 Web服务(称为“ReleaseService”),它需要一个属性文件才能正常工作。我已经在RHEL6上将axis2部署到Tomcat7中,并且具有如下结构:

tomcat/webapps/axis2
+ axis2-web, META-INF, org
+ WEB-INF
+ + classes, conf, lib, modules
+ + services
+ + + ReleaseService
+ + + + com, lib, META-INF

考虑到Java,我希望工作目录为tomcat/webapps/axis2/WEB-INF/services/ReleaseService,因为它包含一个lib文件夹和我的二进制文件的根文件夹。

所以我将我的属性文件放在那里并尝试通过

访问它
File configFile = new File("releaseservice.properties");

显然不起作用。我已经找了好几个小时但找不到帖子或文档片段,它告诉我工作目录在哪里。我发现this,但系统属性对我来说是没有选择的,因为我希望简化部署。

发现,工作目录是我的tomcat/bin文件夹,它是Tomcat Java进程的根目录。

加分问题:如何在我的网络服务中找到我的服务目录? Axis2是否提供任何帮助以找出服务的文件夹?

2 个答案:

答案 0 :(得分:1)

不建议对部署在Java EE容器中的应用程序代码中的当前工作目录进行假设。此外,您假设在部署WAR时,releaseservice.properties将作为文件存在,即容器爆炸WAR。这对Tomcat来说是正确的,但在其他服务器上可能不是这样。

Axis2为每个已部署的服务创建不同的类加载器。这意味着您可以通过查找资源来访问您的属性文件:

MyService.class.getResourceAsStream("/releaseservice.properties")

MyService替换为实现您的服务的实际类,或从WEB-INF/services/ReleaseService加载的任何其他类。

答案 1 :(得分:0)

显然工作目录是tomcat/bin文件夹。即使看起来在tomcat中运行了一个专用的应用程序,它也是完全相同的Java进程。

通过添加以下调试代码找到它:

File test = new File("abc.txt");
System.out.println(test.getAbsolutePath());

返回了/opt/tomcat/bin