java - 从 axis2 中的静态上下文获取参数

标签 java tomcat apache-axis java-ee-6

在尝试将 axis2 网络应用程序从 glassfish3 移动到 tomcat6 时,我似乎无法找到从静态上下文获取配置参数的方法。

在 glassfish3 中,一个系统属性被定义在一个很远的地方,并使用 System.getProperty(String name) 从应用程序中读取。 .不仅 web 同意这不是 web 应用程序的方式,而且这个技巧对于 tomcat 也不可行 (tomcat docs) .

ServletContext 中读取参数这也是不可行的,因为应用程序使用 axis2,而且我似乎无法找到一种方法来从初始化应用程序配置的静态上下文访问任何类型的 servlet voodoo。

services.xml (包含 axis2 服务描述的文件)可以包含 <parameter>节点,所以这似乎是配置配置位置的好地方,但我似乎无法找到从应用程序读取这些参数的方法。

简而言之:关于如何从静态上下文中获取在应用程序代码之外配置的值的任何想法?


(此处列出的答案是 StackOverflow 不允许我回答我自己的问题...)

在网上搜索了一些之后,找到了使用 org.apache.axis2.engine.ServiceLifeCycle 实现的解决方案。 , 它可以读取 startUp 中的参数- 方法本身:

Parameter param = service.getParameter("name");
if (param != null) {
    saveParamValue(param.getValue().toString());
} else {
    // log warning on falling back to System.getProperty()
}

使用 class="fully.qualified.ClassName" 附加生命周期类在 <service>services.xml 的节点axis2 使用的文件。

这行得通,现在应用程序只是因为其他原因而崩溃(但这与此问题无关)。

最佳答案

可以通过获取服务的 ServiceContext 对象,然后调用 ServiceContext.getParameter() 来访问 services.xml 中的参数。如果您的服务实现类实现了 Lifecycle接口(interface),那么 Axis2 将在每次创建服务类的新实例时调用 Lifecycle.init()Lifecycle.init() 的参数是服务的 ServiceContext。您的 init() 实现可以保存上下文对象或查找您感兴趣的参数。

关于java - 从 axis2 中的静态上下文获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9804467/

相关文章:

java - ArrayIndexOutOfBoundsException,但元素打印正常

java - 为什么我的 Tomcat 服务器会间歇性地抛出 40 4's when compiling JSP' s?

spring - spring boot需要WAS(Websphere Application Server)吗?

java - 无法将 Axis2 方面添加到具有类似 git 结构的 eclipse 项目

java - "Invalid Element"调用 Web 服务时发生 AXIS 错误

java - 你能混合使用 JVM 语言吗?即 : Groovy & Clojure

java - 如何根据在线数据库对黑莓用户进行身份验证?

java - Webdriver/Xpath/Java : Crawl DOM to click on 'Element with No Unique Identifier'

javascript - 使用 IDE 工具创建网站并在 Web 服务器上进行测试

java - 打包 Spring 管理的 Axis2 Web 服务客户端