0

我有一些 Axis2 Web 服务被展开部署,这意味着我没有创建一个 .aar 文件来保存在服务目录中,而是有一个目录,其中存在 Axis2 服务的文件和文件夹。类似于以下内容:

[...]axis2\WEB-INF\services\someService\META-INF\service.xml

我的 ServiceClass 正在实现 ServiceLifeCycle 以在服务启动期间执行某些操作。要在启动期间做我需要做的事情,我需要在我的服务目录中有一个文件,但我似乎无法在启动期间获得我的服务目录的路径。通常 AxisService.getFileName() 会提供我的服务目录的路径,但在启动期间似乎还没有服务的路径,getFileName() 提供“null”。似乎该路径仅可用于已启动的服务,因为在 shutdown 方法中 getFileName 为我的服务提供了正确的路径。

在服务启动期间有什么方法可以获取路径吗?我已经在寻找 Hooks 或其他东西,至少在服务启动后直接得到通知,但在它第一次被调用以获取我的路径并做我的“某事”之前,但似乎没有可用的。

我不想要的是在 service.xml 文件中配置我的服务的路径,我希望服务能够自行检索它的路径。

谢谢你的帮助!

4

1 回答 1

1

Axis2 为每个服务提供了一个类加载器,该类加载器可以访问与服务打包的文件(在 AAR 或展开的服务目录中)。访问与服务打包的文件的正常方法是使用该类加载器的功能getResource()getResourceAsStream()

要获取服务类加载器,您可以调用AxisService.getClassLoader(). this.getClass().getClassLoader()从服务中打包的类调用也应该有效。

于 2013-04-25T15:41:05.580 回答