2012-03-21 42 views
0

尝试从glassfish3移动一个Axis2 web的应用的Tomcat6,我似乎无法找到一种方式来获得从静态上下文一个配置参数。获取从静态上下文参数Axis2中

在glassfish3,系统特性是在一个遥远的地方所定义和使用System.getProperty(String name)应用程序读取。网络不仅认同这不是网络应用的方式,这个技巧对于tomcat (tomcat docs)来说是不可行的。

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

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

因此,在短期:如何获得配置的应用程序的代码外提供从静态上下文值的任何想法?


(答案在这里列为StackOverflow上不允许我来回答我的问题...)

在网上淘再过了些,溶液中使用的org.apache.axis2.engine.ServiceLifeCycle的实现,它可以读取发现在startUp -method一个参数作为这样:

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

生命周期类由Axis2中使用的services.xml文件的<service>节点上使用class="fully.qualified.ClassName"附接。

这有效,现在应用程序只是崩溃在别的东西(但对此问题很少)。

回答

1

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

相关问题