繁体   English   中英

如何为JAX-WS Web服务处理程序提供参数?

[英]How to provide a parameter to a JAX-WS web service handler?

十年前,我使用Weblogic 8.1(J2EE 1.4)和JAX-RPC创建了几个应用程序,它们主要包含Web服务。 这些Web服务的每次调用都记录在数据库中,这要归功于Web服务处理程序,我可以使用以下XML文件进行定义:

<?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服务所属的应用程序的名称,以便该应用程序名称可以与soap请求一起存储在数据库中。 。

今天我必须实现相同的功能,但是技术已经改变。 我现在必须使用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>

如您所见,似乎不再有可能向处理程序提供参数。

所以我的问题是:该功能真的消失了吗? 真的没有办法为处理程序类提供参数吗?

没错, <init-param>已从JAX-WS的配置选项中删除。 根据JSR-109规范

部署描述符中的元素init-params不再用于基于JAX-WS的容器。 如果需要,开发人员应为此目的使用在应用程序组件的部署描述符中声明的环境入口元素()。 这些可以使用@Resource批注注入到处理程序中,也可以使用JNDI查找。

这对您来说意味着将初始参数定义为原始JNDI条目,并将其作为@Resources注入到处理程序中。

  • 在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; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM