十年前,我用Weblogic 8.1(J2EE 1.4)和JAX-RPC创建了几个应用程序,主要包含Web服务。由于我可以使用这样的XML文件定义Web服务处理程序,因此将这些Web服务的Eeach调用记录在数据库中:
<?xml version="1.0" encoding="UTF-8"?>
<hc:wlw-handler-config xmlns:hc="http://www.bea.com/2003/03/wlw/handler/config/">
<hc:handler-chain name="HistHandler">
<hc:handler handler-name="HistLogger" handler-class="class implementing the handler">
<hc:init-param>
<hc:description>description of the parameter</hc:description>
<hc:param-name>name of the parameter</hc:param-name>
<hc:param-value>value of the parameter</hc:param-value>
</hc:init-param>
</hc:handler>
</hc:handler-chain>
</hc:wlw-handler-config>
正如您所看到的,可以为JaxRpc Handler提供一个参数,并且我使用此功能来提供Web服务所属的应用程序的名称,以便此应用程序名称可以存储在数据库中肥皂要求。
我今天必须实现同样的目标,但技术已发生变化。我现在必须使用J2EE 1.6(Tomee ++ 1.6.0.1),而JAX-WS已经取代了JAX-RPC。 我仍然可以使用XML文件指定Web服务处理程序,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
<handler-chain>
<handler>
<handler-name>Name of the handler</handler-name>
<handler-class>class implementing the handler</handler-class>
</handler>
</handler-chain>
</handler-chains>
正如您所看到的,似乎没有更多可能为处理程序提供参数。
所以我的问题是:该功能真的消失了吗?真的没有办法为处理程序类提供参数吗?
答案 0 :(得分:3)
你是对的,<init-param>
已从JAX-WS中的配置选项中拉出来。 From the JSR-109 specification:
部署描述符中的元素
init-params
不再存在 用于基于JAX-WS的容器。如果需要,开发人员应该使用 在中声明的环境入口元素() 用于此目的的应用程序组件的部署描述符。这些 可以使用@Resource
注释或者注入到处理程序中 查找使用JNDI。
这对您来说意味着您要将init参数定义为vanilla JNDI条目,并将其作为@Resources
viz
在web.xml中:
<env-entry>
<description>Description</description>
<env-entry-name>PROPERTY_NAME</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>property_value</env-entry-value>
</env-entry>
在你的处理程序中
@Resource String PROPERTY_NAME;