【问题标题】:Get the list of deployed Axis services from another Axis service从另一个 Axis 服务获取已部署的 Axis 服务列表
【发布时间】:2011-08-22 19:16:55
【问题描述】:

我有一个关于如何在另一个 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 服务的构造函数中使用它,它导致了一个无限循环。 (创建 Axis 实例 -> 创建服务实例 -> 创建 Axis 实例 -> 创建服务实例 -> ...)所以我想知道有没有办法以编程方式从另一个部署的服务获取已部署服务的列表? (就像http://localhost:8080/axis2/services/listServices 一样)。非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: java service axis2 web


    【解决方案1】:

    您需要获取环境的AxisConfiguration 对象。它提供了一个名为getServices() 的函数,该函数返回已安装服务的地图。

    如果你的服务实现了 ServiceLifecycle,ServiceLifecycle.startup() 函数会在服务启动期间传递给 AxisConfiguration 对象。或者,如果您的服务类实现了Lifecycle,那么Lifecycle.init() 函数将传递一个ServiceContext 对象。您应该可以调用 ServiceContext.getConfigurationContext().getAxisConfiguration() 从那里获取 AxisConfiguration。

    【讨论】:

    • 非常感谢肯斯特的回答!我试图在我的 Web 服务中实现 ServiceLifeCycle 接口,但是在部署期间没有调用 startup() 方法。关于如何让 Axis 引擎调用此方法的任何想法?顺便说一句,我将我的 Web 服务编写为 POJO 服务。也许这是个问题?感谢您的帮助。
    • 我通过实现 Lifecycle 接口设法让它工作。它现在可以正常工作。谢谢!对于那些感兴趣的人,这里有一篇文章讨论 ServiceLifeCycle 和 Lifecycle 之间的区别。 link
    • 那篇文章没有把它拼出来。要使用 ServiceLifecycle 功能,您必须将 class="my.service.lifecycle.class" 属性添加到 services.xml 文件中的 service 元素。完成后,startup() 将在 Axis2 首次加载您的服务时被调用,shutdown() 将在 Axis2 关闭时被调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多