spring与cxf的整合
2014-05-02 10:50
267 查看
一、在web.xml中配置web service的servlet
<servlet >
<servlet-name >cxf-ws</servlet-name >
<servlet-class >org.apache.cxf.transport.servlet.CXFServlet </servlet-class>
</servlet >
<servlet-mapping >
<servlet-name >cxf-ws</servlet-name >
<url-pattern >/ ws/*</url-pattern >
</servlet-mapping >
二、新建一个applicationContext-ws.xml文件
在web.xml中引入该配置文件
[align=left] <context-param>[/align]
[align=left] <param-name >contextConfigLocation </param-name>[/align]
[align=left] <param-value >[/align]
[align=left] classpath:spring/applicationContext-ws.xml[/align]
[align=left] </param-value>[/align]
[align=left] </context-param >[/align]
applicationContext-ws.xml
<?xml version= "1.0" encoding ="UTF-8"?>
<beans xmlns= "http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd " >
</beans>
三、在applicationContext-ws.xml引入cxf的配置文件:
<!-- Import Apache CXF
Bean Definition -->
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<!-- end -->
四、定义一个web service server端
<!-- 暴露webservice 1
-->
<jaxws:server id="helloServer"
serviceClass="com.iit.song.ws.service.IHello"
address= "/hello">
<jaxws:serviceBean>
<ref bean= "hello"/> <!--
要暴露的 bean 的引用 -->
</jaxws:serviceBean>
</jaxws:server >
<!-- end -->
wsdl地址为:127.0.0.1:8080/ws/hello?wsdl
< bean id ="hello" class ="com.iit.song.ws.service.Hello"></bean >
[align=left] 1> 定义一个web service接口[/align]
[align=left] [/align]
[align=left] @WebService[/align]
[align=left]public interface IHello {[/align]
[align=left] public String say();[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]2>实现该接口[/align]
[align=left]@WebService[/align]
[align=left]public class Hello implements IHello{[/align]
[align=left] @Override[/align]
[align=left] public String say(){[/align]
[align=left] return "hello world" ;[/align]
[align=left] }[/align]
[align=left]}[/align]
五、定义一个interceptor:
<!-- 暴露webservice 1
-->
<jaxws:server id= "helloServer"
serviceClass ="com.iit.song.ws.service.IHello"
address= "/hello" >
< jaxws:serviceBean>
< ref bean= "hello" /> <!--
要暴露的 bean 的引用 -->
</ jaxws:serviceBean>
< jaxws:inInterceptors >
[align=left] < ref bean= "testInInterceptor" />[/align]
[align=left] </ jaxws:inInterceptors >[/align]
[align=left]
[/align]
</jaxws:server >
<!-- end -->
在applicationContext-ws.xml中配置interceptor
< bean id ="testInInterceptor" class="com.iit.song.ws.interceptor.TestInInterceptor"></bean >
定义该interceptor:
public class TestInInterceptor extends AbstractPhaseInterceptor<SoapMessage>{
private Logger logger =
LoggerFactory.getLogger(TestInInterceptor. class);
[align=left] public TestInInterceptor(String phase){[/align]
[align=left] super(phase);[/align]
[align=left] } [/align]
[align=left] public TestInInterceptor(){[/align]
[align=left] super(Phase.PRE_INVOKE );[/align]
[align=left] }[/align]
[align=left] @Override[/align]
public void handleMessage(SoapMessage
message) throws Fault {
System. out.println("in
interceptor" );
[align=left] }[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]六、定义一个handler:[/align]
<!-- 暴露webservice 1
-->
<jaxws:server id= "helloServer"
serviceClass ="com.iit.song.ws.service.IHello"
address= "/hello" >
< jaxws:serviceBean>
< ref bean= "hello" /> <!--
要暴露的 bean 的引用 -->
</ jaxws:serviceBean>
<jaxws:handlers>
<ref bean= "handler"/>
</jaxws:handlers>
[align=left]
[/align]
</jaxws:server >
<!-- end -->
[align=left]
[/align]
[align=left]
[/align]
[align=left] 在applicationContext-ws.xml中添加该行:[/align]
[align=left] < bean id ="handler" class ="com.iit.song.ws.handler.TestHandler"></bean >[/align]
[align=left]
[/align]
[align=left] [/align]
[align=left] public class TestHandler implements SOAPHandler<SOAPMessageContext>{[/align]
[align=left] @Override[/align]
public boolean handleMessage(SOAPMessageContext
messagecontext) {
[align=left] SOAPMessage message = messagecontext.getMessage();[/align]
[align=left] try {[/align]
[align=left] message.writeTo(System. out);[/align]
[align=left] } catch (SOAPException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] return true ;[/align]
[align=left] }[/align]
[align=left] @Override[/align]
public boolean handleFault(SOAPMessageContext
messagecontext) {
[align=left] System. out.println("handleFault" );[/align]
[align=left] SOAPMessage message = messagecontext.getMessage();[/align]
[align=left] try {[/align]
[align=left] message.writeTo(System. out);[/align]
[align=left] } catch (SOAPException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] return true ;[/align]
[align=left] }[/align]
[align=left] @Override[/align]
public void close(MessageContext
messagecontext) {
[align=left] [/align]
[align=left] }[/align]
[align=left] @Override[/align]
[align=left] public Set<QName> getHeaders() {[/align]
[align=left] System. out.println("getheaders" );[/align]
[align=left] return null ;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]七、spring 客户端配置[/align]
[align=left]
[/align]
[align=left]<jaxws:client id= "hello"[/align]
[align=left] serviceClass="com.iit.song.ws.service.IHello" [/align]
[align=left] address="http://localhost:8080/ws/IHello" >[/align]
[align=left] <jaxws:outInterceptors>[/align]
[align=left] <ref bean= "headerInterceptor" />[/align]
[align=left] </jaxws:outInterceptors>[/align]
[align=left]</jaxws:client>[/align]
[align=left]
[/align]
<servlet >
<servlet-name >cxf-ws</servlet-name >
<servlet-class >org.apache.cxf.transport.servlet.CXFServlet </servlet-class>
</servlet >
<servlet-mapping >
<servlet-name >cxf-ws</servlet-name >
<url-pattern >/ ws/*</url-pattern >
</servlet-mapping >
二、新建一个applicationContext-ws.xml文件
在web.xml中引入该配置文件
[align=left] <context-param>[/align]
[align=left] <param-name >contextConfigLocation </param-name>[/align]
[align=left] <param-value >[/align]
[align=left] classpath:spring/applicationContext-ws.xml[/align]
[align=left] </param-value>[/align]
[align=left] </context-param >[/align]
applicationContext-ws.xml
<?xml version= "1.0" encoding ="UTF-8"?>
<beans xmlns= "http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd " >
</beans>
三、在applicationContext-ws.xml引入cxf的配置文件:
<!-- Import Apache CXF
Bean Definition -->
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<!-- end -->
四、定义一个web service server端
<!-- 暴露webservice 1
-->
<jaxws:server id="helloServer"
serviceClass="com.iit.song.ws.service.IHello"
address= "/hello">
<jaxws:serviceBean>
<ref bean= "hello"/> <!--
要暴露的 bean 的引用 -->
</jaxws:serviceBean>
</jaxws:server >
<!-- end -->
wsdl地址为:127.0.0.1:8080/ws/hello?wsdl
< bean id ="hello" class ="com.iit.song.ws.service.Hello"></bean >
[align=left] 1> 定义一个web service接口[/align]
[align=left] [/align]
[align=left] @WebService[/align]
[align=left]public interface IHello {[/align]
[align=left] public String say();[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]2>实现该接口[/align]
[align=left]@WebService[/align]
[align=left]public class Hello implements IHello{[/align]
[align=left] @Override[/align]
[align=left] public String say(){[/align]
[align=left] return "hello world" ;[/align]
[align=left] }[/align]
[align=left]}[/align]
五、定义一个interceptor:
<!-- 暴露webservice 1
-->
<jaxws:server id= "helloServer"
serviceClass ="com.iit.song.ws.service.IHello"
address= "/hello" >
< jaxws:serviceBean>
< ref bean= "hello" /> <!--
要暴露的 bean 的引用 -->
</ jaxws:serviceBean>
< jaxws:inInterceptors >
[align=left] < ref bean= "testInInterceptor" />[/align]
[align=left] </ jaxws:inInterceptors >[/align]
[align=left]
[/align]
</jaxws:server >
<!-- end -->
在applicationContext-ws.xml中配置interceptor
< bean id ="testInInterceptor" class="com.iit.song.ws.interceptor.TestInInterceptor"></bean >
定义该interceptor:
public class TestInInterceptor extends AbstractPhaseInterceptor<SoapMessage>{
private Logger logger =
LoggerFactory.getLogger(TestInInterceptor. class);
[align=left] public TestInInterceptor(String phase){[/align]
[align=left] super(phase);[/align]
[align=left] } [/align]
[align=left] public TestInInterceptor(){[/align]
[align=left] super(Phase.PRE_INVOKE );[/align]
[align=left] }[/align]
[align=left] @Override[/align]
public void handleMessage(SoapMessage
message) throws Fault {
System. out.println("in
interceptor" );
[align=left] }[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]六、定义一个handler:[/align]
<!-- 暴露webservice 1
-->
<jaxws:server id= "helloServer"
serviceClass ="com.iit.song.ws.service.IHello"
address= "/hello" >
< jaxws:serviceBean>
< ref bean= "hello" /> <!--
要暴露的 bean 的引用 -->
</ jaxws:serviceBean>
<jaxws:handlers>
<ref bean= "handler"/>
</jaxws:handlers>
[align=left]
[/align]
</jaxws:server >
<!-- end -->
[align=left]
[/align]
[align=left]
[/align]
[align=left] 在applicationContext-ws.xml中添加该行:[/align]
[align=left] < bean id ="handler" class ="com.iit.song.ws.handler.TestHandler"></bean >[/align]
[align=left]
[/align]
[align=left] [/align]
[align=left] public class TestHandler implements SOAPHandler<SOAPMessageContext>{[/align]
[align=left] @Override[/align]
public boolean handleMessage(SOAPMessageContext
messagecontext) {
[align=left] SOAPMessage message = messagecontext.getMessage();[/align]
[align=left] try {[/align]
[align=left] message.writeTo(System. out);[/align]
[align=left] } catch (SOAPException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] return true ;[/align]
[align=left] }[/align]
[align=left] @Override[/align]
public boolean handleFault(SOAPMessageContext
messagecontext) {
[align=left] System. out.println("handleFault" );[/align]
[align=left] SOAPMessage message = messagecontext.getMessage();[/align]
[align=left] try {[/align]
[align=left] message.writeTo(System. out);[/align]
[align=left] } catch (SOAPException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] return true ;[/align]
[align=left] }[/align]
[align=left] @Override[/align]
public void close(MessageContext
messagecontext) {
[align=left] [/align]
[align=left] }[/align]
[align=left] @Override[/align]
[align=left] public Set<QName> getHeaders() {[/align]
[align=left] System. out.println("getheaders" );[/align]
[align=left] return null ;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]七、spring 客户端配置[/align]
[align=left]
[/align]
[align=left]<jaxws:client id= "hello"[/align]
[align=left] serviceClass="com.iit.song.ws.service.IHello" [/align]
[align=left] address="http://localhost:8080/ws/IHello" >[/align]
[align=left] <jaxws:outInterceptors>[/align]
[align=left] <ref bean= "headerInterceptor" />[/align]
[align=left] </jaxws:outInterceptors>[/align]
[align=left]</jaxws:client>[/align]
[align=left]
[/align]
相关文章推荐
- Spring整合CXF webservice restful 实例
- Spring整合CXF开发基于rest的服务
- 五、CXF整合Spring
- Spring整合CXF webservice restful 实例
- Spring整合CXF webservice restful实例详解
- cxf整合spring 命名空间问题 (nested exception is org.xml.sax.SAXParseException)
- cxf和spring整合
- cxf与spring的整合使用
- Spring整合CXF发布Web Services
- webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成
- CXF与SPRING的无缝整合时,为什么不用写CXF的配置文件cxf-servlet.xml?
- CXF WebService整合Spring
- (四)CXF整合Spring发布WebService服务
- cxf整合spring配置拦截器
- CXF整合Spring开发WebService
- 10.Web Service Spring整合CXF之添加拦截器 完结
- CXF WebService整合Spring
- Spring与CXF整合
- Spring整合CXF,发布RSETful 风格WebService
- webService(cxf--rs_spring的整合)