我有一些Axis2 Web服务被部署爆炸,这意味着我没有创建一个.aar文件来保存在services目录中,但是有一个目录,其中存在Axis2服务的文件和文件夹。如下所示:
[...]的axis2 \ WEB-INF \服务\ someService \ META-INF \ service.xml中
我的ServiceClass正在实施ServiceLifeCycle,以便在启动服务期间执行某些操作。要做我在启动期间需要做的事情,我需要在我的服务目录中有一个文件,但我似乎无法在启动期间获取我的服务目录的路径。通常,AxisService.getFileName()将提供我的服务目录的路径,但在启动期间似乎没有到该服务的路径,getFileName()传递“null”。似乎该路径仅适用于已启动的服务,因为在shutDown方法中,getFileName提供了我的服务的正确路径。
在服务启动期间,我有什么方法可以获得路径吗?我已经寻找Hooks或者其他东西,至少在服务启动后直接得到通知,但在第一次调用我的路径并做我的“某事”之前,但是它似乎没有可用的。
我不想要的是在service.xml文件中配置我的服务路径,我希望服务能够自己检索它的路径。
感谢您的帮助!
答案 0 :(得分:1)
Axis2为每个服务提供了一个类加载器,可以访问与服务一起打包的文件(在AAR或爆炸的服务目录中)。访问与服务一起打包的文件的常规方法是使用该类加载器的getResource()
或getResourceAsStream()
函数。
要获取服务类加载器,您可以调用AxisService.getClassLoader()
。从服务中打包的类调用this.getClass().getClassLoader()
也应该有效。