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

环境:
MyEclipse10
JDK6
Tomcat7
CXF2.5
Spring3

示例项目结构图:
CXF+Spring+Tomcat简明示例

如上图所示,全部依赖的第三方库都在lib中,下面贴出全部代码。
IHelloService.java
CXF+Spring+Tomcat简明示例package bing.server;
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例import javax.jws.WebService;
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例/**
CXF+Spring+Tomcat简明示例 * <p>
CXF+Spring+Tomcat简明示例 * WebService接口
CXF+Spring+Tomcat简明示例 * </p>
CXF+Spring+Tomcat简明示例 *
CXF+Spring+Tomcat简明示例 *
@author IceWee
CXF+Spring+Tomcat简明示例 * @date 2012-7-6
CXF+Spring+Tomcat简明示例 *
@version 1.0
CXF+Spring+Tomcat简明示例
*/

CXF+Spring+Tomcat简明示例@WebService
CXF+Spring+Tomcat简明示例public interface IHelloService {
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例    public String sayHello(String username);
CXF+Spring+Tomcat简明示例   
CXF+Spring+Tomcat简明示例}

CXF+Spring+Tomcat简明示例

HelloServiceImpl.java
CXF+Spring+Tomcat简明示例package bing.server;
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例import javax.jws.WebService;
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例/**
CXF+Spring+Tomcat简明示例 * <p>
CXF+Spring+Tomcat简明示例 * WebService实现类
CXF+Spring+Tomcat简明示例 * </p>
CXF+Spring+Tomcat简明示例 *
CXF+Spring+Tomcat简明示例 *
@author IceWee
CXF+Spring+Tomcat简明示例 * @date 2012-7-6
CXF+Spring+Tomcat简明示例 *
@version 1.0
CXF+Spring+Tomcat简明示例
*/

CXF+Spring+Tomcat简明示例@WebService(endpointInterface = "bing.server.IHelloService", serviceName = "HelloService")
CXF+Spring+Tomcat简明示例public class HelloServiceImpl implements IHelloService {
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例    @Override
CXF+Spring+Tomcat简明示例    public String sayHello(String username) {
CXF+Spring+Tomcat简明示例        return "hello, " + username;
CXF+Spring+Tomcat简明示例    }

CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例}

CXF+Spring+Tomcat简明示例

HelloServiceClient.java
CXF+Spring+Tomcat简明示例package bing.client;
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例import org.springframework.context.ApplicationContext;
CXF+Spring+Tomcat简明示例import org.springframework.context.support.ClassPathXmlApplicationContext;
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例import bing.server.IHelloService;
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例/**
CXF+Spring+Tomcat简明示例 * <p>
CXF+Spring+Tomcat简明示例 * WebService调用方-客户端
CXF+Spring+Tomcat简明示例 * </p>
CXF+Spring+Tomcat简明示例 *
CXF+Spring+Tomcat简明示例 *
@author IceWee
CXF+Spring+Tomcat简明示例 * @date 2012-7-6
CXF+Spring+Tomcat简明示例 *
@version 1.0
CXF+Spring+Tomcat简明示例
*/

CXF+Spring+Tomcat简明示例public class HelloServiceClient {
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例    public static void main(String[] args) {
CXF+Spring+Tomcat简明示例        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-client.xml");
CXF+Spring+Tomcat简明示例        IHelloService helloService = (IHelloService) context.getBean("client");
CXF+Spring+Tomcat简明示例        String response = helloService.sayHello("Peter");
CXF+Spring+Tomcat简明示例        System.out.println(response);
CXF+Spring+Tomcat简明示例    }

CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例}

CXF+Spring+Tomcat简明示例

applicationContext-server.xml
CXF+Spring+Tomcat简明示例<?xml version="1.0" encoding="UTF-8"?>
CXF+Spring+Tomcat简明示例<beans xmlns="http://www.springframework.org/schema/beans"
CXF+Spring+Tomcat简明示例    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
CXF+Spring+Tomcat简明示例    xmlns:jaxws
="http://cxf.apache.org/jaxws"
CXF+Spring+Tomcat简明示例    xsi:schemaLocation
="http://www.springframework.org/schema/beans
CXF+Spring+Tomcat简明示例                       http://www.springframework.org/schema/beans/spring-beans.xsd
CXF+Spring+Tomcat简明示例                       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
>
CXF+Spring+Tomcat简明示例    <!--
CXF+Spring+Tomcat简明示例        ***注意***
CXF+Spring+Tomcat简明示例        手动添加的内容:
CXF+Spring+Tomcat简明示例        xmlns:jaxws="http://cxf.apache.org/jaxws"
CXF+Spring+Tomcat简明示例        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
CXF+Spring+Tomcat简明示例    
-->
CXF+Spring+Tomcat简明示例   
CXF+Spring+Tomcat简明示例    <import resource="classpath:META-INF/cxf/cxf.xml" />
CXF+Spring+Tomcat简明示例    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
CXF+Spring+Tomcat简明示例    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例    <jaxws:endpoint id="helloService" implementor="bing.server.HelloServiceImpl" address="/helloService" />
CXF+Spring+Tomcat简明示例       
CXF+Spring+Tomcat简明示例</beans>
CXF+Spring+Tomcat简明示例

applicationContext-client.xml
CXF+Spring+Tomcat简明示例<?xml version="1.0" encoding="UTF-8"?>
CXF+Spring+Tomcat简明示例<beans xmlns="http://www.springframework.org/schema/beans"
CXF+Spring+Tomcat简明示例    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
CXF+Spring+Tomcat简明示例    xmlns:jaxws
="http://cxf.apache.org/jaxws"
CXF+Spring+Tomcat简明示例    xsi:schemaLocation
="http://www.springframework.org/schema/beans
CXF+Spring+Tomcat简明示例                       http://www.springframework.org/schema/beans/spring-beans.xsd
CXF+Spring+Tomcat简明示例                       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
>
CXF+Spring+Tomcat简明示例    <!--
CXF+Spring+Tomcat简明示例        ***注意***
CXF+Spring+Tomcat简明示例        手动添加的内容:
CXF+Spring+Tomcat简明示例        xmlns:jaxws="http://cxf.apache.org/jaxws"
CXF+Spring+Tomcat简明示例        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
CXF+Spring+Tomcat简明示例    
-->
CXF+Spring+Tomcat简明示例   
CXF+Spring+Tomcat简明示例    <import resource="classpath:META-INF/cxf/cxf.xml" />
CXF+Spring+Tomcat简明示例    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
CXF+Spring+Tomcat简明示例    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例    <bean id="client" class="bing.server.IHelloService" factory-bean="clientFactory" factory-method="create" />
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
CXF+Spring+Tomcat简明示例        <property name="serviceClass" value="bing.server.IHelloService" />
CXF+Spring+Tomcat简明示例        <property name="address" value="http://localhost:8080/CXFDemo/ws/helloService" />
CXF+Spring+Tomcat简明示例    </bean>
CXF+Spring+Tomcat简明示例</beans>
CXF+Spring+Tomcat简明示例

web.xml
CXF+Spring+Tomcat简明示例<?xml version="1.0" encoding="UTF-8"?>
CXF+Spring+Tomcat简明示例<web-app version="3.0"
CXF+Spring+Tomcat简明示例    xmlns
="http://java.sun.com/xml/ns/javaee"
CXF+Spring+Tomcat简明示例    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
CXF+Spring+Tomcat简明示例    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee
CXF+Spring+Tomcat简明示例    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
>
CXF+Spring+Tomcat简明示例  <display-name>CXFDemo</display-name>
CXF+Spring+Tomcat简明示例 
CXF+Spring+Tomcat简明示例  <context-param>
CXF+Spring+Tomcat简明示例      <param-name>contextConfigLocation</param-name>
CXF+Spring+Tomcat简明示例      <param-value>classpath:applicationContext-server.xml</param-value>
CXF+Spring+Tomcat简明示例  </context-param>
CXF+Spring+Tomcat简明示例
CXF+Spring+Tomcat简明示例  <listener>
CXF+Spring+Tomcat简明示例    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
CXF+Spring+Tomcat简明示例  </listener>
CXF+Spring+Tomcat简明示例 
CXF+Spring+Tomcat简明示例  <servlet>
CXF+Spring+Tomcat简明示例    <servlet-name>CXFServlet</servlet-name>
CXF+Spring+Tomcat简明示例    <display-name>CXFServlet</display-name>
CXF+Spring+Tomcat简明示例    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
CXF+Spring+Tomcat简明示例    <load-on-startup>1</load-on-startup>
CXF+Spring+Tomcat简明示例  </servlet>
CXF+Spring+Tomcat简明示例  <servlet-mapping>
CXF+Spring+Tomcat简明示例    <servlet-name>CXFServlet</servlet-name>
CXF+Spring+Tomcat简明示例    <url-pattern>/ws/*</url-pattern>
CXF+Spring+Tomcat简明示例  </servlet-mapping>
CXF+Spring+Tomcat简明示例  <welcome-file-list>
CXF+Spring+Tomcat简明示例    <welcome-file>index.jsp</welcome-file>
CXF+Spring+Tomcat简明示例  </welcome-file-list>
CXF+Spring+Tomcat简明示例</web-app>
CXF+Spring+Tomcat简明示例

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

从上图中可以看到我们对外发布的WebService接口,点击蓝色超链接,返回如图:
CXF+Spring+Tomcat简明示例
到此,证明我们的Web Service已经发布成功,可以进行调用测试了。运行HelloServiceClient,返回如图:
CXF+Spring+Tomcat简明示例

全文完!

相关文章: