设为首页 收藏本站
查看: 650|回复: 0

[经验分享] Apache CXF简单WebService例子

[复制链接]

尚未签到

发表于 2017-1-1 11:20:57 | 显示全部楼层 |阅读模式
  源码下载地址: http://dl.dbank.com/c0vhvbrxlr
  本文来自我的CSDN博客,转载请标明出处:http://blog.csdn.net/cuiran/archive/2010/12/02/6049645.aspx
  一.开发环境
  我的开发环境是:
  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接口
  代码如下
  view plaincopy to clipboardprint?
/** 
 * HelloWorld.java 
 * 版权所有(C) 2010 cuiran2001@163.com 
 * 创建:崔冉  Dec 2, 2010 9:47:44 AM 
 */ 
package com.demo;  
 
import javax.jws.WebService;  
 
/** 
 * @author 崔冉 
 * @version 1.0.0 
 * @desc 接口HelloWorld 
 */ 
@WebService 
public interface HelloWorld {  
    String sayHi(String text);  

/**
 * HelloWorld.java
 * 版权所有(C) 2010 cuiran2001@163.com
 * 创建:崔冉  Dec 2, 2010 9:47:44 AM
 */
package com.demo;
  import javax.jws.WebService;
  /**
 * @author 崔冉
 * @version 1.0.0
 * @desc 接口HelloWorld
 */
@WebService
public interface HelloWorld {
 String sayHi(String text);
}
 
  再创建一个类实现HelloWorld接口
  view plaincopy to clipboardprint?
/** 
 * HelloWorldImpl.java 
 * 版权所有(C) 2010 cuiran2001@163.com 
 * 创建:崔冉  Dec 2, 2010 9:49:17 AM 
 */ 
package com.demo;  
 
import javax.jws.WebService;  
 
/** 
 * @author 崔冉 
 * @version 1.0.0 
 * @desc 实现HelloWorld接口 
 */ 
@WebService 
public class HelloWorldImpl implements HelloWorld {  
 
    /** 
     *  
     */ 
    public String sayHi(String text) {  
          
        return "Hi,"+text;  
    }  
 

/**
 * HelloWorldImpl.java
 * 版权所有(C) 2010 cuiran2001@163.com
 * 创建:崔冉  Dec 2, 2010 9:49:17 AM
 */
package com.demo;
  import javax.jws.WebService;
  /**
 * @author 崔冉
 * @version 1.0.0
 * @desc 实现HelloWorld接口
 */
@WebService
public class HelloWorldImpl implements HelloWorld {
  /**
  *
  */
 public String sayHi(String text) {
  
  return "Hi,"+text;
 }
  }
 
  然后修改web.xml里面内容
  view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?> 
<web-app> 
  <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>WEB-INF/beans.xml</param-value> 
    </context-param> 
 
    <listener> 
        <listener-class> 
            org.springframework.web.context.ContextLoaderListener  
        </listener-class> 
    </listener> 
 
    <servlet> 
        <servlet-name>CXFServlet</servlet-name> 
        <display-name>CXF Servlet</display-name> 
        <servlet-class> 
            org.apache.cxf.transport.servlet.CXFServlet  
        </servlet-class> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
 
    <servlet-mapping> 
        <servlet-name>CXFServlet</servlet-name> 
        <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
 
</web-app> 
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/beans.xml</param-value>
    </context-param>
  <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
  <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <display-name>CXF Servlet</display-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
  <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
  </web-app>
 
  在WEB-INF下面创建一个beans.xml
  代码如下
  view plaincopy to clipboardprint?
<?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" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans.xsd  
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> 
 
    <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" /> 
 
    <jaxws:endpoint id="helloWorld" implementor="com.demo.HelloWorldImpl" address="/HelloWorld" /> 
</beans> 
<?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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
  <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" />
  <jaxws:endpoint id="helloWorld" implementor="com.demo.HelloWorldImpl" address="/HelloWorld" />
</beans>
  将Web工程发布到Tomcat里面,然后启动Server
  
 
  创建Client
  
  接着创建客户端,在com.demo下面创建client-beans.xml。内容如下
  
view plaincopy to clipboardprint?
<?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" 
    xsi:schemaLocation="  
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"> 
 
    <bean id="client" class="com.demo.HelloWorld" 
        factory-bean="clientFactory" factory-method="create" /> 
 
    <bean id="clientFactory" 
        class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> 
        <property name="serviceClass" value="com.demo.HelloWorld" /> 
        <property name="address" value="http://127.0.0.1:8080/cxfdemo/HelloWorld" /> 
    </bean> 
 
</beans> 
<?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"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
  <bean id="client" class="com.demo.HelloWorld"
        factory-bean="clientFactory" factory-method="create" />
  <bean id="clientFactory"
        class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        <property name="serviceClass" value="com.demo.HelloWorld" />
        <property name="address" value="http://127.0.0.1:8080/cxfdemo/HelloWorld" />
    </bean>
  </beans>
  在创建测试类Client.java
  view plaincopy to clipboardprint?
/** 
 * Client.java 
 * 版权所有(C) 2010 cuiran2001@163.com 
 * 创建:崔冉  Dec 2, 2010 9:53:30 AM 
 */ 
package com.demo;  
 
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
 
/** 
 * @author 崔冉 
 * @version 1.0.0 
 * @desc 测试类 
 */ 
public class Client {  
      public static Client self = new Client();  
      private HelloWorld client = null;  
        
     private Client() {  
            // START SNIPPET: client  
            ApplicationContext context = new ClassPathXmlApplicationContext(  
                    new String[]{"com/demo/client-beans.xml"});  
            client = (HelloWorld) context.getBean("client");  
        }  
        
 
        public HelloWorld getServer() {  
              
            return client;  
              
        }  
 
        public String getText(String text) throws Exception {  
            String response = getServer().sayHi(text);  
            return response;  
        }  
 
 
    /** 
     * @param args 
     */ 
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        try {  
              
            System.out.println(self.getText("cuiran"));  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
          
    }  
 

/**
 * Client.java
 * 版权所有(C) 2010 cuiran2001@163.com
 * 创建:崔冉  Dec 2, 2010 9:53:30 AM
 */
package com.demo;
  import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
  /**
 * @author 崔冉
 * @version 1.0.0
 * @desc 测试类
 */
public class Client {
   public static Client self = new Client();
   private HelloWorld client = null;
  
  private Client() {
         // START SNIPPET: client
         ApplicationContext context = new ClassPathXmlApplicationContext(
                 new String[]{"com/demo/client-beans.xml"});
         client = (HelloWorld) context.getBean("client");
     }
  
  public HelloWorld getServer() {
      
         return client;
        
     }
  public String getText(String text) throws Exception {
         String response = getServer().sayHi(text);
         return response;
     }
  
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  try {
   
   System.out.println(self.getText("cuiran"));
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
  }
 
  然后进行测试运行。如果遇到类似这种错误“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
  本文来自我的CSDN博客,转载请标明出处:http://blog.csdn.net/cuiran/archive/2010/12/02/6049645.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322401-1-1.html 上篇帖子: Apache和lighttp配置 下篇帖子: apache+tomcat负载平衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表