Java 从axis2中的静态上下文获取参数
在尝试将axis2 web应用程序从glassfish3移动到tomcat6时,我似乎找不到从静态上下文获取配置参数的方法 在glassfish3中,系统属性在很远的地方定义,并使用Java 从axis2中的静态上下文获取参数,java,tomcat,axis2,java-ee-6,Java,Tomcat,Axis2,Java Ee 6,在尝试将axis2 web应用程序从glassfish3移动到tomcat6时,我似乎找不到从静态上下文获取配置参数的方法 在glassfish3中,系统属性在很远的地方定义,并使用system.getProperty(字符串名称)从应用程序读取。web不仅同意这不是web应用程序的方式,而且这种技巧对于tomcat来说是不可行的 从ServletContext读取参数也是不可行的,因为应用程序使用axis2,而且我似乎找不到从初始化应用程序配置的静态上下文访问任何类型的servlet vood
system.getProperty(字符串名称)
从应用程序读取。web不仅同意这不是web应用程序的方式,而且这种技巧对于tomcat来说是不可行的
从ServletContext
读取参数也是不可行的,因为应用程序使用axis2,而且我似乎找不到从初始化应用程序配置的静态上下文访问任何类型的servlet voodoo的方法
services.xml
(包含axis2服务描述的文件)可以包含
节点,因此这似乎是配置配置位置的好地方,但我似乎找不到从应用程序读取这些参数的方法
简言之:关于如何从静态上下文中获得在应用程序代码外部配置的值,有什么想法吗
(此处列出的答案是StackOverflow不允许我回答自己的问题…) 在进一步搜索Internet之后,使用
org.apache.axis2.engine.ServiceLifeCycle
的实现找到了一个解决方案,该实现可以读取启动
-方法中的参数,如下所示:
Parameter param=service.getParameter(“名称”);
如果(参数!=null){
saveParamValue(param.getValue().toString());
}否则{
//返回System.getProperty()时出现日志警告
}
使用axis2使用的services.xml
文件的
节点上的class=“full.qualified.ClassName”
附加生命周期类
这是可行的,现在应用程序只是在其他事情上崩溃(但这与这个问题没有什么关系) 可以通过获取服务的
ServiceContext
对象,然后调用ServiceContext.getParameter()
来访问services.xml
中的参数。如果您的服务实现类实现了该接口,那么Axis2将在每次创建服务类的新实例时调用Lifecycle.init()
。Lifecycle.init()
的参数是服务的ServiceContext
。您的init()
实现可以保存上下文对象或查找您感兴趣的参数