我有一个关于如何获取另一个 Axis 服务中已部署的 Axis 服务列表的问题。这是场景。我使用 Tomcat 7.0.14 和 Axis 2-1.5.5 作为部署环境。假设目前 Tomcat 上部署了 5 个 Axis 服务,分别是 A、B、C、D、E。我想在服务 E 中编写一些代码,使其能够获取包含所有已部署服务的服务列表,即 A、B、C、D、E。
我尝试使用 ConfigurationContextFactory.createConfigurationContextFromFileSystem() 方法。但该方法似乎每次调用时都会创建一个新的 Axis 2 实例。由于我在 Web 服务的构造函数中使用了它,因此导致了无限循环。 (创建轴实例 -> 创建服务实例 -> 创建轴实例 -> 创建服务实例 -> ...) 所以我想知道是否有一种方法可以以编程方式从另一个已部署的服务获取已部署服务的列表? (就像 http://localhost:8080/axis2/services/listServices 一样)。非常感谢任何帮助。
谢谢。
最佳答案
您需要获取环境的AxisConfiguration
对象。除其他外,它还提供了一个名为 getServices()
的函数,该函数返回已安装服务的映射。
如果您的服务实现了 ServiceLifecycle,则在服务启动期间会向 ServiceLifecycle.startup()
函数传递 AxisConfiguration 对象。或者,如果您的服务类实现 Lifecycle
,则 Lifecycle.init()
函数将传递一个 ServiceContext
对象。您应该能够调用 ServiceContext.getConfigurationContext().getAxisConfiguration()
从那里获取 AxisConfiguration。
关于java - 从另一个 Axis 服务获取已部署的 Axis 服务列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152401/