CXF+Spring+Tomcat简明示例
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简明示例相关推荐
- JAXWS CXF Spring + MyEclipse + Maven + Tomcat Byron自學視頻02
JAXWS CXF Spring + MyEclipse + Maven + Tomcat Byron自學視頻02 Description: 使用 Apache CXF 建置 WebService 並 ...
- spring分布式事务示例_Spring声明式事务示例
spring分布式事务示例 事务是具有ACID (原子,一致,隔离和持久)属性的工作单元. 原子意味着所有更改都发生或什么都没有发生. 如果从一个帐户借钱并记入另一个帐户,则交易将确保借记和贷项均已完 ...
- Spring MVC 安全示例
Spring MVC 安全示例 欢迎使用UserDetailsService的Spring安全性示例.在上一篇文章中,我们学习了如何在Web应用程序中使用Spring Security.今天我们将 ...
- Spring Boot AJAX 示例
本文以spring boot框架.thymeleaf引擎为基础,利用jquery.ajax提交HTML表单请求到后台(spring rest api),后台返回一个JSON格式的数据为例进行说明. 开 ...
- veth-pair技术在docker中的应用(docker网络通信)及tomcat Dockerfile示例
evth-pair技术在docker中的应用 docker容器间相互通信的关键就是通过evth-pair技术 tomcat Dockerfile示例 参考链接: https://blog.csdn.n ...
- Spring Boot的Spring Data JPA示例
1.简介 在本文中,我们将演示如何利用功能强大的Spring Data JPA API与本课程中的数据库(内存中的H2数据库)进行交互. Spring Data JPA提供了一组非常强大且高度抽象的接 ...
- Spring事务管理示例JDBC
Spring事务管理示例JDBC Spring Transaction Management是Spring框架中使用最广泛且最重要的特性之一.事务管理在任何企业应用程序中都是一项微不足道的任务.我们已 ...
- Spring Hibernate集成示例教程
Spring Hibernate集成示例教程(Spring 4 + Hibernate 3和Hibernate 4) Spring是最常用的Java EE Framework之一,而Hibernate ...
- JSF Spring Hibernate集成示例教程
JSF Spring Hibernate集成示例教程 欢迎使用JSF Spring Hibernate Integration示例教程.在上一篇教程中,我们了解了如何将JSF和Spring框架集成在一 ...
最新文章
- 生活问题 | 对华为畅玩手机5X进行升级
- 逆向而行—ASP的O/R MAPPING 使用解释
- wagtail python cms 测试部署
- 今日头条野心背后逃不过的10个问题
- java 递归生成格雷码_格雷码的递归生成
- 安装虚拟机 Network boot from AMD Operating System no...
- 将G1内的SIM卡联系人导入到GMAIL的联系人中
- Qt之设置QWidget背景色
- 打开office 文档慢的小技巧1 更改默认打印机
- 当代计算机技术在建筑设备中的应用,计算机技术在建筑设计中应用浅谈.doc
- 数据库连接池php-cp介绍
- j​a​v​a​实​现​访​百​度​文​库​、​道​客​巴​巴​、​豆​丁​阅​读(http://wenku.baidu.com/view/ad30168fbceb19e8b8f6baea.html)
- 解锁system分区
- 卸载python2.7_98%的人这样卸载软件,真的卸载干净了吗?这才是正确的卸载方式...
- oracle 查看用户配额,【Quota】获取及调整用户表空间配额方法
- Python3输出所有大小写字母(字母表)、数字
- SysML-Sec: A Model-Driven Environment for Developing Secure Embedded Systems
- 计算机数值方法知识,计算机数值方法.pdf
- 怎样修复计算机系统声音,电脑没声音了如何恢复?电脑突然没声音修复方法汇总...
- 为什么要有不同的参考文献格式?
热门文章
- 关于STM32F4的FMC CLK配置浅解
- jdk7启动时报“java.lang.VerifyError:Expecting a stackmap frame at branch target”
- Google员工自述:在哈佛教书和在Google工作的差别
- 浮点转字符串性能比较
- SqlServer判断数据库、表、存储过程、函数是否存在
- [转载] 晓说——第31期:无比强大的美国工会
- 付费会员制,如何赋能产品?
- C# SqlBulkCopy数据批量入库
- systemctl添加开机启动
- 边界测试——让BUG现形