CXF之jaxws:endpoint对spring bean的引用

转自:http://blog.sina.com.cn/s/blog_586b6c050100bziq.html

由于CXF对spring的无缝支持,CXF的使用,经常与spring捆绑在一起。随之而起的,自然是想在jaxws:endpoint中引用spring bean。在CXF提供的HelloWorld例子中,配置如下:
<jaxws:endpoint id="helloWorld" implementor="demo.spring.HelloWorldImpl" address="/HelloWorld" />
这里,其实现方式就没法再引用其它的spring bean了。若想引用spring bean,方式有两种:

方式一:
<bean name = "implementorBean" *** />
<jaxws:endpoint id="helloWorld" 
                implementor="#implementorBean"
                address="/HelloWorld" />
方式二:
<jaxws:endpoint id="theImplementor"
                implementorClass="demo.spring.HelloWorld"
                address="http://localhost:8080/simpleWithAddress">
       <jaxws:implementor>
          <bean ref="implementorBean"/>
       </jaxws:implementor>
 </jaxws:endpoint>

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Java代码
  1. <jaxws:endpoint id="dwDataChange"    
  2.         address="/DwDataChange" implementor="cn...imp.DwDataChangeImp">  
  3. </jaxws:endpoint>  

 这个样就只能用到实现类 。 只需要做稍微的修改便可以 用spring的 ioc

Java代码
  1. <bean  id="xxxxxxx"></bea>  

 修改上面的  implementor="#xxxxxxx"  就ok  还有一种方式是

Java代码
  1.  <jaxws:server id="dwDataChange" serviceClass="cn...imp.DwDataChangeImp" address="/DwDataChange">  
  2.     <jaxws:serviceBean>  
  3.         <ref bean="xxxxx"/>   
  4.     </jaxws:serviceBean>  
  5. </jaxws:server>  

 另外也可以 在第一种的基础上

Java代码
  1. <jaxws:implementor>   
  2.       <bean ref="xxxxxx"/>   
  3. </jaxws:implementor>  

====

转自:http://hi.baidu.com/hnsmczw/blog/item/18811ff00011b34e342acc5d.html

 

注意方式二的<bean ref="implementorBean"/>正确写法是:<ref  bean="implementorBean"/>

implementorClass  是接口


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
非常抱歉,我犯了一个错误。在 Apache CXF 中,确实不支持在 `@WebService` 注解中使用 `@javax.xml.bind.annotation.XmlSchema` 注解。如果要设置 `elementFormDefault` 属性,可以在 CXFSpring 配置文件中使用 `jaxb:globalBindings` 元素来设置。 以下是一个示例配置: ```xml <jaxws:endpoint id="myServiceEndpoint" implementor="com.example.MyWebService" address="/MyWebService"> <jaxws:properties> <entry key="jaxb.additionalContextClasses"> <list> <value>com.example.jaxb.MyJaxbContext</value> </list> </entry> </jaxws:properties> <jaxws:binding> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> </jaxws:binding> <jaxws:features> <bean class="org.apache.cxf.feature.LoggingFeature"/> </jaxws:features> <jaxws:dataBinding> <bean class="org.apache.cxf.databinding.source.SourceDataBinding"/> </jaxws:dataBinding> <jaxws:inInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/> </jaxws:inInterceptors> <jaxws:outInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/> </jaxws:outInterceptors> <jaxws:outFaultInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/> </jaxws:outFaultInterceptors> <jaxws:serviceFactory> <bean class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"> <property name="dataBinding"> <bean class="org.apache.cxf.databinding.source.SourceDataBinding"/> </property> <property name="bus" ref="cxf"/> <property name="jaxbConfig"> <bean class="org.apache.cxf.jaxb.JAXBDataBinding"> <property name="contextProperties"> <map> <entry key="com.sun.xml.bind.defaultNamespaceRemap" value="true"/> </map> </property> <property name="extraClass"> <list> <value>com.example.MyJaxbContext</value> </list> </property> <property name="marshallerProperties"> <map> <entry key="com.sun.xml.bind.namespacePrefixMapper" value-ref="myNamespacePrefixMapper"/> </map> </property> </bean> </property> </bean> </jaxws:serviceFactory> <jaxws:handlers> <bean class="com.example.MyHandler"/> </jaxws:handlers> <jaxws:inFaultInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/> </jaxws:inFaultInterceptors> <jaxws:properties> <entry key="faultStackTraceEnabled" value="true"/> </jaxws:properties> <jaxws:binding> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> </jaxws:binding> <jaxws:serviceFactory> <bean class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"> <property name="dataBinding"> <bean class="org.apache.cxf.databinding.source.SourceDataBinding"/> </property> <property name="bus" ref="cxf"/> </bean> </jaxws:serviceFactory> <jaxws:endpoint> ``` 在这个示例中,`jaxb:globalBindings` 元素被用来设置 `elementFormDefault` 属性。你需要将 `com.example.jaxb.MyJaxbContext` 替换为你自己的 JAXB 上下文类。 希望这个回答能够帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值