CXF+Spring+Tomcat简明示例

多系统(异构系统)进行交互时,一种良好的方式便是调用Web Service,本示例基于Apache组织的CXF,为了方便起见特将服务端和客户端写在同一个工程下,实际项目中是不可能的,但是客户端却依赖于服务端的Web Service接口,那么可以通过导出jar的方式。

环境:
MyEclipse10
JDK6
Tomcat7
CXF2.5
Spring3

示例项目结构图:


如上图所示,全部依赖的第三方库都在lib中,下面贴出全部代码。
IHelloService.java
package bing.server;

import javax.jws.WebService;

/**
 * <p>
 * WebService接口
 * </p>
 * 
 * 
@author IceWee
 * @date 2012-7-6
 * 
@version 1.0
 
*/

@WebService
public  interface IHelloService  {

    public String sayHello(String username);
    
}


HelloServiceImpl.java
package bing.server;

import javax.jws.WebService;

/**
 * <p>
 * WebService实现类
 * </p>
 * 
 * 
@author IceWee
 * @date 2012-7-6
 * 
@version 1.0
 
*/

@WebService(endpointInterface = "bing.server.IHelloService", serviceName = "HelloService")
public  class HelloServiceImpl  implements IHelloService  {

    @Override
    public String sayHello(String username) {
        return "hello, " + username;
    }


}


HelloServiceClient.java
package bing.client;

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

import bing.server.IHelloService;

/**
 * <p>
 * WebService调用方-客户端
 * </p>
 * 
 * 
@author IceWee
 * @date 2012-7-6
 * 
@version 1.0
 
*/

public  class HelloServiceClient  {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-client.xml");
        IHelloService helloService = (IHelloService) context.getBean("client");
        String response = helloService.sayHello("Peter");
        System.out.println(response);
    }


}


applicationContext-server.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"
    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"
>
     <!--  
        ***注意*** 
        手动添加的内容:
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        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 ="helloService"  implementor ="bing.server.HelloServiceImpl"  address ="/helloService"   />
        
</ beans >

applicationContext-client.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"
    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"
>
     <!--  
        ***注意*** 
        手动添加的内容:
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        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"   />

     < bean  id ="client"  class ="bing.server.IHelloService"  factory-bean ="clientFactory"  factory-method ="create"   />

     < bean  id ="clientFactory"  class ="org.apache.cxf.jaxws.JaxWsProxyFactoryBean" >
         < property  name ="serviceClass"  value ="bing.server.IHelloService"   />
         < property  name ="address"  value ="http://localhost:8080/CXFDemo/ws/helloService"   />
     </ bean >
</ beans >

web.xml
<? xml version="1.0" encoding="UTF-8" ?>
< web-app  version ="3.0"  
    xmlns
="http://java.sun.com/xml/ns/javaee"  
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
>
   < display-name >CXFDemo </ display-name >
  
   < context-param >
       < param-name >contextConfigLocation </ param-name >
       < param-value >classpath:applicationContext-server.xml </ param-value >
   </ context-param >
 
   < listener >
     < listener-class >org.springframework.web.context.ContextLoaderListener </ listener-class >
   </ listener >
  
   < servlet >
     < servlet-name >CXFServlet </ servlet-name >
     < display-name >CXFServlet </ 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 >/ws/* </ url-pattern >
   </ servlet-mapping >
   < welcome-file-list >
     < welcome-file >index.jsp </ welcome-file >
   </ welcome-file-list >
</ web-app >

所有项目都已配置完成,可以发布到Tomcat了,在浏览器中输入: http://localhost:8080/CXFDemo/ws ,返回如图:


从上图中可以看到我们对外发布的WebService接口,点击蓝色超链接,返回如图:

到此,证明我们的Web Service已经发布成功,可以进行调用测试了。运行HelloServiceClient,返回如图:


全文完!
















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值