Apache CXF简单WebService例子

一.开发环境

我的开发环境是:

MyEclipse 6.5

Tomcat 6.0

Apache cxf-2.3.0 下载地址: http://www.apache.org/dist/cxf/2.3.0/

 

二.开发步骤

  创建Server

  1. 将下载的cxf-2.3.0 解压。然后在MyEclipse里面添加一个

     User Library名字叫library-cxf-2.3.0  把 lib下的包都添加进去。

  2.新建一个Web工程cxfdemo,并添加library-cxf-2.3.0,然后建个com.demo包。在包里面创建HelloWorld接口

代码如下

[java]  view plain copy
  1. /** 
  2.  * HelloWorld.java 
  3.  * 版权所有(C) 2010 cuiran2001@163.com 
  4.  * 创建:崔冉  Dec 2, 2010 9:47:44 AM 
  5.  */  
  6. package com.demo;  
  7.   
  8. import javax.jws.WebService;  
  9.   
  10. /** 
  11.  * @author 崔冉 
  12.  * @version 1.0.0 
  13.  * @desc 接口HelloWorld 
  14.  */  
  15. @WebService  
  16. public interface HelloWorld {  
  17.     String sayHi(String text);  
  18. }  

 

再创建一个类实现HelloWorld接口

[java]  view plain copy
  1. /** 
  2.  * HelloWorldImpl.java 
  3.  * 版权所有(C) 2010 cuiran2001@163.com 
  4.  * 创建:崔冉  Dec 2, 2010 9:49:17 AM 
  5.  */  
  6. package com.demo;  
  7.   
  8. import javax.jws.WebService;  
  9.   
  10. /** 
  11.  * @author 崔冉 
  12.  * @version 1.0.0 
  13.  * @desc 实现HelloWorld接口 
  14.  */  
  15. @WebService  
  16. public class HelloWorldImpl implements HelloWorld {  
  17.   
  18.     /** 
  19.      *  
  20.      */  
  21.     public String sayHi(String text) {  
  22.           
  23.         return "Hi,"+text;  
  24.     }  
  25.   
  26. }  

 

然后修改web.xml里面内容

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app>  
  3.   <context-param>  
  4.         <param-name>contextConfigLocation</param-name>  
  5.         <param-value>WEB-INF/beans.xml</param-value>  
  6.     </context-param>  
  7.   
  8.     <listener>  
  9.         <listener-class>  
  10.             org.springframework.web.context.ContextLoaderListener  
  11.         </listener-class>  
  12.     </listener>  
  13.   
  14.     <servlet>  
  15.         <servlet-name>CXFServlet</servlet-name>  
  16.         <display-name>CXF Servlet</display-name>  
  17.         <servlet-class>  
  18.             org.apache.cxf.transport.servlet.CXFServlet  
  19.         </servlet-class>  
  20.         <load-on-startup>1</load-on-startup>  
  21.     </servlet>  
  22.   
  23.     <servlet-mapping>  
  24.         <servlet-name>CXFServlet</servlet-name>  
  25.         <url-pattern>/*</url-pattern>  
  26.     </servlet-mapping>  
  27.   
  28. </web-app>  

 

 

在WEB-INF下面创建一个beans.xml

代码如下

[xhtml]  view plain copy
  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"  
  4.     xmlns:jaxws="http://cxf.apache.org/jaxws"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  6.     http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.     http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
  8.   
  9.     <import resource="classpath:META-INF/cxf/cxf.xml" />  
  10.     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  11.     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  12.   
  13.     <jaxws:endpoint id="helloWorld" implementor="com.demo.HelloWorldImpl" address="/HelloWorld" />  
  14. </beans>  

 

将Web工程发布到Tomcat里面,然后启动Server

 

 

 

  创建Client

  接着创建客户端,在com.demo下面创建client-beans.xml。内容如下

[xhtml]  view plain copy
  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"  
  4.     xmlns:jaxws="http://cxf.apache.org/jaxws"  
  5.     xsi:schemaLocation="  
  6. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  7. http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">  
  8.   
  9.     <bean id="client" class="com.demo.HelloWorld"  
  10.         factory-bean="clientFactory" factory-method="create" />  
  11.   
  12.     <bean id="clientFactory"  
  13.         class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">  
  14.         <property name="serviceClass" value="com.demo.HelloWorld" />  
  15.         <property name="address" value="http://127.0.0.1:8080/cxfdemo/HelloWorld" />  
  16.     </bean>  
  17.   
  18. </beans>  

 

 

在创建测试类Client.java

[java]  view plain copy
  1. /** 
  2.  * Client.java 
  3.  * 版权所有(C) 2010 cuiran2001@163.com 
  4.  * 创建:崔冉  Dec 2, 2010 9:53:30 AM 
  5.  */  
  6. package com.demo;  
  7.   
  8. import org.springframework.context.ApplicationContext;  
  9. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  10.   
  11. /** 
  12.  * @author 崔冉 
  13.  * @version 1.0.0 
  14.  * @desc 测试类 
  15.  */  
  16. public class Client {  
  17.       public static Client self = new Client();  
  18.       private HelloWorld client = null;  
  19.         
  20.      private Client() {  
  21.             // START SNIPPET: client  
  22.             ApplicationContext context = new ClassPathXmlApplicationContext(  
  23.                     new String[]{"com/demo/client-beans.xml"});  
  24.             client = (HelloWorld) context.getBean("client");  
  25.         }  
  26.         
  27.   
  28.         public HelloWorld getServer() {  
  29.               
  30.             return client;  
  31.               
  32.         }  
  33.   
  34.         public String getText(String text) throws Exception {  
  35.             String response = getServer().sayHi(text);  
  36.             return response;  
  37.         }  
  38.   
  39.   
  40.     /** 
  41.      * @param args 
  42.      */  
  43.     public static void main(String[] args) {  
  44.         // TODO Auto-generated method stub  
  45.         try {  
  46.               
  47.             System.out.println(self.getText("cuiran"));  
  48.         } catch (Exception e) {  
  49.             // TODO Auto-generated catch block  
  50.             e.printStackTrace();  
  51.         }  
  52.           
  53.     }  
  54.   
  55. }  

 

 

    然后进行测试运行。如果遇到类似这种错误“AXB 2.1 API is being loaded from the bootstrap classloader”说明你的web工程添加了J2EE 1.4或者是1.5 library. 这样就与jaxb-api-2.2.1.jar

  冲突了,只需删除即可。

最后运行如图

源码下载地址:http://dl.dbank.com/c0vhvbrxlr

对于jar包下载                   http://dl.dbank.com/c0y67j2hqq

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值