java - 从另一个 Axis 服务获取已部署的 Axis 服务列表

标签 java service apache-axis web

我有一个关于如何获取另一个 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/

相关文章:

java - 将 JTabbedPane 与需要共享数据的 JPanel 一起使用

java - START_STICKY 服务是否在应用程序自行终止后重新启动

从 Windows 服务调用批处理文件

java - Axis2 Soap WS 客户端 : java. lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema

java - Solaris 5.10 上的 UnsupportedCharsetException : IS646-US with JDK 1. 8u51

java - 当应用程序再次运行时,值将从数据库中删除

javascript - 如何为 Sails.js 创建启动/停止/重启 Linux 服务

java - 找不到功能 'default' 的元工厂;这通常意味着 axiom-impl.jar 不在类路径中

web-services - 登录密码 Web 服务 Java

java - 在 Java 中使用替换字符串