2013-04-25 109 views
0

我有一些Axis2 Web服务被部署爆炸,这意味着我不创建.aar文件来保存在services目录中,但有一个目录,其中的文件和文件夹Axis2服务存在。像下面这样:确定启动期间Axis2服务的文件系统路径

[...] Axis2的\ WEB-INF \ SERVICES \ someService \ META-INF \ service.xml的

我的服务类正在实施ServiceLifeCycle服务的启动过程中做一些事情。在启动过程中我需要做的事情是在服务目录中需要一个文件,但我似乎无法在启动过程中获取到我的服务目录的路径。通常情况下,AxisService.getFileName()会提供到我的服务目录的路径,但在启动过程中似乎没有到服务的路径,但getFileName()会提供“null”。看起来路径只适用于已启动的服务,因为在shutDown方法中,getFileName为我的服务提供了正确的路径。

有没有什么办法可以在服务启动期间获得可能的路径?我已经在寻找Hooks或者至少在服务启动后直接得到通知,但是在第一次调用它来获得我的路径并执行我的“某事”之前,它似乎并没有可用的。

我不想要的是在service.xml文件中配置我的服务的路径,我更喜欢与服务能够检索它自己的路径的东西。

感谢您的帮助!

回答

1

Axis2为每个服务提供一个类加载器,该类加载器可以访问服务打包的文件(在AAR或分解的服务目录中)。访问与该服务一起打包的文件的正常方式是使用该类加载器的getResource()getResourceAsStream()函数。

要获得服务类加载器,您可以拨打AxisService.getClassLoader()。从打包在服务中的类中调用this.getClass().getClassLoader()也应该可以工作。

+0

谢谢,这似乎正是我要找的。我已经看到了类加载器的访问,但认为它不能用于解析我的文件的路径。幸运的是我错了。 :-)像下面这样的一行给了我请求文件的完整路径:URL dummy = arg1.getClassLoader()。getResource(“META-INF/config/app_config.cfg”); – 2013-04-25 21:19:02

相关问题