xfire1.2X 配置使用SOAP1.2报文

本文介绍如何使用XFIRE框架配置SOAP1.2服务的具体步骤与注意事项,包括Spring配置文件示例及如何实现WSS认证配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 大家都说xfire简单好用,不过我更觉得这个是相对而言的,如果你需要一些非默认的特性,那么就比较麻烦了,至少这样的文档太少了,指使不知该如何下手。下面是关于让xfire生成的服务使用SOAP1.2报文的设置内容,大家看看吧,我倒觉得不如Axis2来得简单。

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    
<!-- SOAP12 binding -->
    
<bean id="xxxxPwdSoap12BindingBean"
        class
="org.codehaus.xfire.spring.config.Soap12BindingBean">
        
<property name="endpoints">
            
<list>
                
<ref bean="xxxxPwdEndPoint" />
            
</list>
        
</property>
        
<property name="allowUndefinedEndpoints" value="true" />
        
<property name="transport"
            value
="http://www.w3.org/2003/05/soap/bindings/HTTP/" /> <!--WSDL1.1 http://schemas.xmlsoap.org/soap/http -->
    
</bean>
    
<bean id="xxxxPwdEndPoint"
        class
="org.codehaus.xfire.spring.config.EndpointBean">
        
<property name="name" ref="xxxxPwdQName" />
        
<property name="url"
            value
="http://localhost:7001/ReadyESB/XxxxPwdService" />
    
</bean>
    
<bean id="xxxxPwdQName" class="javax.xml.namespace.QName">
        
<constructor-arg>
            
<value>http://interfaces.service.web.readyesb</value>
        
</constructor-arg>
    
</bean>

    
<!-- SOAP12 binding for WSS-->
    
<bean id="xxxxPwdWSSSoap12BindingBean"
        class
="org.codehaus.xfire.spring.config.Soap12BindingBean">
        
<property name="endpoints">
            
<list>
                
<ref bean="xxxxPwdWSSEndPoint" />
            
</list>
        
</property>
        
<property name="allowUndefinedEndpoints" value="true" />
        
<property name="transport"
            value
="http://www.w3.org/2003/05/soap/bindings/HTTP/" />
    
</bean>
    
<bean id="xxxxPwdWSSEndPoint"
        class
="org.codehaus.xfire.spring.config.EndpointBean">
        
<property name="name" ref="xxxxPwdWSSQName" />
        
<property name="url"
            value
="http://localhost:7001/ReadyESB/XxxxPwdServiceWSS" />
    
</bean>
    
<bean id="xxxxPwdWSSQName" class="javax.xml.namespace.QName">
        
<constructor-arg>
            
<value>http://interfaces.service.web.readyesb</value>
        
</constructor-arg>
    
</bean>

    
<!-- XMLBeans Service Template -->
    
<bean id="xxxxPwdXMLBeansServiceTemplate"
        class
="org.codehaus.xfire.spring.remoting.XFireExporter"
        abstract
="true">
        
<property name="serviceFactory"
            ref
="xfire.xmlbeansServiceFactory" />
        
<property name="xfire" ref="xfire" />
        
<property name="style" value="document" />  <!--  为了兼容性考虑请使用 wrapped Mod 2008-01-29 -->
        
<property name="use" value="literal" />
        
<property name="bindings" ref="xxxxPwdSoap12BindingBean" />
        
<property name="createDefaultBindings" value="false" />
    
</bean>

    
<!-- XMLBeans Service Template for WSS-->
    
<bean id="xxxxPwdWSSXMLBeansServiceTemplate"
        class
="org.codehaus.xfire.spring.remoting.XFireExporter"
        abstract
="true">
        
<property name="serviceFactory"
            ref
="xfire.xmlbeansServiceFactory" />
        
<property name="xfire" ref="xfire" />
        
<property name="style" value="document" />  <!--  为了兼容性考虑请使用 wrapped Mod 2008-01-29 -->
        
<property name="use" value="literal" />
        
<property name="bindings" ref="xxxxPwdWSSSoap12BindingBean" />
        
<property name="createDefaultBindings" value="false" />
    
</bean>

    
<!-- XxxxPwd Interface -->
    
<bean id="XxxxPwdBean" class="readyesb.web.service.impl.XxxxPwdImpl" />

    
<!-- XxxxPwd标准配置 -->
    
<bean id="XxxxPwdService" parent="xxxxPwdXMLBeansServiceTemplate">
        
<property name="serviceBean" ref="XxxxPwdBean" />
        
<property name="serviceClass"
            value
="readyesb.web.service.interfaces.XxxxPwd" />
        
<property name="name" value="XxxxPwdService" />
    
</bean>

    
<!-- XxxxPwdWSS认证配置 -->
    
<bean id="XxxxPwdServiceWSS"
        parent
="xxxxPwdWSSXMLBeansServiceTemplate">
        
<property name="serviceBean" ref="XxxxPwdBean" />
        
<property name="serviceClass"
            value
="readyesb.web.service.interfaces.XxxxPwdWSS" />
        
<property name="inHandlers">
            
<list>
                
<ref bean="domInHandler" />
                
<ref bean="wss4jInHandler" />
                
<ref bean="ValidateUserTokenHandler" />
            
</list>
        
</property>
        
<property name="name" value="XxxxPwdServiceWSS" />
    
</bean>
</beans>

另外一部分
    <!-- ===============XMLBeans Data Binding=========== -->
    
<bean id="xmlbeansTypeRegistry"
        class
="org.codehaus.xfire.xmlbeans.XmlBeansTypeRegistry" />
    
<bean id="xfire.xmlbeansServiceFactory"
        class
="org.codehaus.xfire.xmlbeans.XmlBeansServiceFactory"
        singleton
="true">
        
<constructor-arg index="0" ref="xfire.transportManager" />
    
</bean>
    
<!-- ===============End============================= -->

其中有一项,需要注意的<property name="allowUndefinedEndpoints" value="true" />,有人说是方便设置服务器端不用进行EndPoints设置的,其实是限制客户端在访问的时候,是否使用服务器端指定的EndPoints的。
用这个能不能防止代理访问呢,我试了试通过TcpTrace,总之value=“false”的话,服务端就会报错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值