Apache CXF实战之二 集成Sping与Web容器

书接上文,下面看看CXF怎样和spring集成。

1.创建HelloWorld 接口类

[java] view plaincopyprint?

<EMBED id=ZeroClipboardMovie_1 name=ZeroClipboardMovie_1 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer height=14 width=29 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=1&width=29&height=14" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">

  1. package com.googlecode.garbagecan.cxfstudy.helloworld;  

  2.   

  3. import javax.jws.WebMethod;  

  4. import javax.jws.WebParam;  

  5. import javax.jws.WebResult;  

  6. import javax.jws.WebService;  

  7.   

  8. @WebService   

  9. public interface HelloWorld {  

  10.     @WebMethod  

  11.     @WebResult String sayHi(@WebParam String text);  

  12. }  

2.创建HelloWorld实现类 

[java] view plaincopyprint?

<EMBED id=ZeroClipboardMovie_2 name=ZeroClipboardMovie_2 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer height=14 width=29 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=2&width=29&height=14" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">

  1. package com.googlecode.garbagecan.cxfstudy.helloworld;  

  2.   

  3. public class HelloWorldImpl implements HelloWorld {  

  4.   

  5.     public String sayHi(String name) {  

  6.         String msg = "Hello " + name + "!";  

  7.         return msg;  

  8.     }  

  9. }  

3.修改web.xml文件

[html] view plaincopyprint?

<EMBED id=ZeroClipboardMovie_3 name=ZeroClipboardMovie_3 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer height=14 width=29 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=3&width=29&height=14" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">

  1. <!DOCTYPE web-app PUBLIC  

  2.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  

  3.  "http://java.sun.com/dtd/web-app_2_3.dtd" >  

  4.   

  5. <web-app>  

  6.   

  7.     <display-name>cxfstudy</display-name>  

  8.   

  9.     <servlet>  

  10.         <servlet-name>cxf</servlet-name>  

  11.         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  

  12.         <load-on-startup>1</load-on-startup>  

  13.     </servlet>  

  14.   

  15.     <servlet-mapping>  

  16.         <servlet-name>cxf</servlet-name>  

  17.         <url-pattern>/ws/*</url-pattern>  

  18.     </servlet-mapping>  

  19.   

  20.     <listener>  

  21.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  

  22.     </listener>  

  23.       

  24.     <context-param>  

  25.         <param-name>contextConfigLocation</param-name>  

  26.         <param-value>classpath*:**/spring.xml</param-value>  

  27.     </context-param>  

  28.       

  29. </web-app>  

4.创建spring配置文件并放在classpath路径下

[html] view plaincopyprint?

<EMBED id=ZeroClipboardMovie_4 name=ZeroClipboardMovie_4 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer height=14 width=29 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=4&width=29&height=14" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">

  1. <?xml version="1.0" encoding="UTF-8"?>  

  2. <beans xmlns="http://www.springframework.org/schema/beans"  

  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"  

  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd      

  5. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  

  6.     <import resource="classpath:META-INF/cxf/cxf.xml" />  

  7.     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  

  8.     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  

  9.     <jaxws:endpoint id="helloworld" implementor="com.googlecode.garbagecan.cxfstudy.helloworld.HelloWorldImpl" address="/HelloWorld" />  

  10.       

  11.     <!-- For client test -->  

  12.     <jaxws:client id="helloworldClient" address="http://localhost:9000/ws/HelloWorld" serviceClass="com.googlecode.garbagecan.cxfstudy.helloworld.HelloWorld" />     

  13. </beans>  

5.创建测试类

[java] view plaincopyprint?

<EMBED id=ZeroClipboardMovie_5 name=ZeroClipboardMovie_5 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer height=14 width=29 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=5&width=29&height=14" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">

  1. package com.googlecode.garbagecan.cxfstudy.helloworld;  

  2.   

  3. import org.springframework.context.ApplicationContext;  

  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  

  5.   

  6. public class SpringClient {  

  7.     public static void main(String[] args) {  

  8.         ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");  

  9.         HelloWorld helloworld = (HelloWorld)context.getBean("helloworldClient");  

  10.         System.out.println(helloworld.sayHi("kongxx"));  

  11.     }  

  12. }  

6.测试

6.1 首先启动tomcat或者使用maven的jetty,并访问http://localhost:9000/ws/HelloWorld?wsdl来验证web service已经启动并且生效;

6.2 然后运行测试类来验证web service。

你可能感兴趣的:(Apache CXF实战之二 集成Sping与Web容器)