2019独角兽企业重金招聘Python工程师标准>>>

多系统(异构系统)进行交互时,一种良好的方式便是调用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,返回如图:

全文完!

转载于:https://my.oschina.net/u/2357322/blog/519476

CXF+Spring+Tomcat简明示例相关推荐

  1. JAXWS CXF Spring + MyEclipse + Maven + Tomcat Byron自學視頻02

    JAXWS CXF Spring + MyEclipse + Maven + Tomcat Byron自學視頻02 Description: 使用 Apache CXF 建置 WebService 並 ...

  2. spring分布式事务示例_Spring声明式事务示例

    spring分布式事务示例 事务是具有ACID (原子,一致,隔离和持久)属性的工作单元. 原子意味着所有更改都发生或什么都没有发生. 如果从一个帐户借钱并记入另一个帐户,则交易将确保借记和贷项均已完 ...

  3. Spring MVC 安全示例

    Spring MVC 安全示例 欢迎使用UserDetailsS​​ervice的Spring安全性示例.在上一篇文章中,我们学习了如何在Web应用程序中使用Spring Security.今天我们将 ...

  4. Spring Boot AJAX 示例

    本文以spring boot框架.thymeleaf引擎为基础,利用jquery.ajax提交HTML表单请求到后台(spring rest api),后台返回一个JSON格式的数据为例进行说明. 开 ...

  5. veth-pair技术在docker中的应用(docker网络通信)及tomcat Dockerfile示例

    evth-pair技术在docker中的应用 docker容器间相互通信的关键就是通过evth-pair技术 tomcat Dockerfile示例 参考链接: https://blog.csdn.n ...

  6. Spring Boot的Spring Data JPA示例

    1.简介 在本文中,我们将演示如何利用功能强大的Spring Data JPA API与本课程中的数据库(内存中的H2数据库)进行交互. Spring Data JPA提供了一组非常强大且高度抽象的接 ...

  7. Spring事务管理示例JDBC

    Spring事务管理示例JDBC Spring Transaction Management是Spring框架中使用最广泛且最重要的特性之一.事务管理在任何企业应用程序中都是一项微不足道的任务.我们已 ...

  8. Spring Hibernate集成示例教程

    Spring Hibernate集成示例教程(Spring 4 + Hibernate 3和Hibernate 4) Spring是最常用的Java EE Framework之一,而Hibernate ...

  9. JSF Spring Hibernate集成示例教程

    JSF Spring Hibernate集成示例教程 欢迎使用JSF Spring Hibernate Integration示例教程.在上一篇教程中,我们了解了如何将JSF和Spring框架集成在一 ...

最新文章

  1. 生活问题 | 对华为畅玩手机5X进行升级
  2. 逆向而行—ASP的O/R MAPPING 使用解释
  3. wagtail python cms 测试部署
  4. 今日头条野心背后逃不过的10个问题
  5. java 递归生成格雷码_格雷码的递归生成
  6. 安装虚拟机 Network boot from AMD Operating System no...
  7. 将G1内的SIM卡联系人导入到GMAIL的联系人中
  8. Qt之设置QWidget背景色
  9. 打开office 文档慢的小技巧1 更改默认打印机
  10. 当代计算机技术在建筑设备中的应用,计算机技术在建筑设计中应用浅谈.doc
  11. 数据库连接池php-cp介绍
  12. j​a​v​a​实​现​访​百​度​文​库​、​道​客​巴​巴​、​豆​丁​阅​读(http://wenku.baidu.com/view/ad30168fbceb19e8b8f6baea.html)
  13. 解锁system分区
  14. 卸载python2.7_98%的人这样卸载软件,真的卸载干净了吗?这才是正确的卸载方式...
  15. oracle 查看用户配额,【Quota】获取及调整用户表空间配额方法
  16. Python3输出所有大小写字母(字母表)、数字
  17. SysML-Sec: A Model-Driven Environment for Developing Secure Embedded Systems
  18. 计算机数值方法知识,计算机数值方法.pdf
  19. 怎样修复计算机系统声音,电脑没声音了如何恢复?电脑突然没声音修复方法汇总...
  20. 为什么要有不同的参考文献格式?

热门文章

  1. 关于STM32F4的FMC CLK配置浅解
  2. jdk7启动时报“java.lang.VerifyError:Expecting a stackmap frame at branch target”
  3. Google员工自述:在哈佛教书和在Google工作的差别
  4. 浮点转字符串性能比较
  5. SqlServer判断数据库、表、存储过程、函数是否存在
  6. [转载] 晓说——第31期:无比强大的美国工会
  7. 付费会员制,如何赋能产品?
  8. C# SqlBulkCopy数据批量入库
  9. systemctl添加开机启动
  10. 边界测试——让BUG现形