13_CXF和Spring整合发布服务
【服务端】
第一步:建立一个Web项目
第二步:填充CXF jar包
第三步:创建接口及服务类
【工程截图(对比之前的WebService_CXF_Server00)】
【applicationContext.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"
xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> <!-- service -->
<bean id="weatherInterface" class="com.Higgin.ws.service.WeatherInterfaceImpl"></bean> <!--
发布服务
使用jaxws:server和jaxws:endpoint可以发布服务
WebService地址=Tomcat地址值+CXF Servlet的路径+ /weather
-->
<jaxws:server address="/weather" serviceClass="com.Higgin.ws.service.WeatherInterface">
<jaxws:serviceBean>
<ref bean="weatherInterface"/>
</jaxws:serviceBean>
</jaxws:server>
</beans>
【web.xml】
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>WebService_CXF_Spring_Server00</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- 加载Spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- CXF的Servlet -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 本系统的WebService路径必须以/ws/开头 -->
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping> </web-app>
【启动Web容器】
访问 http://localhost:8080/WebService_CXF_Spring_Server00/ws

接着访问 http://localhost:8080/WebService_CXF_Spring_Server00/ws/weather?wsdl

可见WebService服务端启动正常。
【测试注意】
因为Spring和CXF整合将WebService通过TomCat发布,WebService和应用程序共用一个端口是8080。
测试WebService和应用程序(JSP)是否可以共存(都可以访问)
正式上线使用80端口。
【客户端】
【生成客户端代码】
首先,使用利用WebService的wsdl2java工具生成客户端代码:


【客户端工程截图】

【applicationContext.java】
<?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"
xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">
<!--
使用<jaxws:clietn>调用服务端
jaxws:client内部使用JaxWsProxyFactoryBean方式
serviceClass:指定portType地址(需要使用wsdl2java工具生成)
-->
<jaxws:client id="weatherClient" address="http://localhost:8080/WebService_CXF_Spring_Server00/ws/weather?wsdl"
serviceClass="com.higgin.weather.WeatherInterface">
</jaxws:client>
</beans>
【ClientTest.java】
package com.higgin.ws.cxf; import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.higgin.weather.WeatherInterface;
import com.higgin.weather.WeatherModel; public class ClientTest {
private ApplicationContext applicationContext; @Before
public void before(){
applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
} @Test
public void testCxfSpringClient(){
//从Spring容器中取出portType
WeatherInterface weatherInterface=(WeatherInterface) applicationContext.getBean("weatherClient"); //调用portType方法
List<WeatherModel> list=weatherInterface.queryWeather("杭州"); for(WeatherModel weatherModel:list){
System.out.println(weatherModel.getDetail());
Date date=weatherModel.getDate().toGregorianCalendar().getTime();
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));
System.out.println(weatherModel.getTemperatureMax());
System.out.println(weatherModel.getTemperatureMin());
} }
}
【运行结果】

【总结:使用jaxws实现SOAP1.1、SOAP1.2】
方式一:
CXF编程实现:
1.使用jaxwsServerFactoryBean发布WebService服务端。
需要设置:
jaxwsServerFactoryBean.setAddress("WebService地址");
jaxwsServerFactoryBean.setServiceClass("porType类路径"); //由程序员编写的
jaxwsServerFactoryBean.setServiceBean("portType类对象");
jaxwsServerFactoryBean.create(); //发布一个服务
2.使用jaxwsProxyFactory实现客户端调用WebService服务
jaxwsServerFactoryBean.setAddress("WebService的wsdl地址");
jaxwsServerFactoryBean.setServiceClass("portType路径"); //portType是wsdl2java工具生成
jaxwsServerFactoryBean.setCreate(); //创建portType对象
方法二:
CXF和Spring整合开发服务端和客户端。
1.使用<jaxws:Server>发布WebService服务端
在<jaxws:Server>设置Address、serviceClass、serviceBean
2.使用<jaxws:Client>调用WebService服务
在<jaxws:Server>设置Address、serviceClass
13_CXF和Spring整合发布服务的更多相关文章
- (七)CXF之与spring整合发布web服务
一.需求分析 用spring发布服务 二.案例 2.1 引入maven依赖 <dependencies> <!-- 添加Spring支持 --> <dependency& ...
- WebService学习之旅(三)JAX-WS与Spring整合发布WebService
Spring本身就提供了对JAX-WS的支持,有兴趣的读者可以研究下Spring的Spring-WS项目,项目地址: http://docs.spring.io/spring-ws/sites/1.5 ...
- webservice的cxf和spring整合发布
1.新建一个web项目 2.导入cxf相应的jar包,并部署到项目中 3.服务接口 package com.xiaostudy; /** * @desc 服务器接口 * @author xiaostu ...
- Spring整合CXF之发布WebService服务
今天我们来讲下如何用Spring来整合CXF,来发布WebService服务: 给下官方文档地址:http://cxf.apache.org/docs/writing-a-service-with-s ...
- Spring整合CXF,发布RSETful 风格WebService(转)
Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Sp ...
- Spring整合CXF,发布RSETful 风格WebService
原文地址:http://www.cnblogs.com/hoojo/archive/2012/07/23/2605219.html 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有 ...
- spring与axis2整合发布webservice
最近在研究整合spring框架和axis2发布webservice服务,由于本人也才学java不久,为了便于以后的查看,在这里记录下发布过程. 所需的工具包,spring.jar和axis2链接地址为 ...
- 应用Spring MVC发布restful服务是怎样的一种体验
摘要:“约定优于配置”这是一个相当棒的经验,SOAP服务性能差.基于配置.紧耦合,restful服务性能好.基于约定.松耦合,现在我就把使用Spring MVC发布restful服务的 ...
- So easy Webservice 8.spring整合CXF 发布WS
1.添加jar包(cxf的jar包中包含了spring的jar包),添加spring配置文件 2.web.xml中配置CXFServlet,过滤WS服务的地址 <!-- 配置CXFServlet ...
随机推荐
- API功能测试如何实施(转载自测试之道 微信公众号)
什么是API 关于定义什么的,直接维基可得: API(Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定.由于近 ...
- 终端神器 iterm
1.简介 mac自带的终端terminal算蛮好用的, 但相比另一款优秀的终端软件iterm,iterm这款神器不逊于mac自带的终端.它支持了很多快捷键, 深受键盘党的喜爱. 2.下载 http:/ ...
- linux 常用命令 -- 系统管理工具包: 监视邮件的使用情况
清单 5. 获得磁盘使用情况统计信息 $ du -sk * 20 admin 1020 appleby 45828 applicants 13264 buy 11704 dev 11200 finan ...
- win8如何删除未知账户(s-1-5-21-2000478354-1390067357-725345543-1003)
今天突然发现从别处复制来的游戏压缩文件不能解压,并且以前把游戏文件都是放在该目录下的,以前局域网玩起游戏来老是不能作为主机,且不能下载局域网玩的RPG地图,以前就注意过这个未知账户(s-1-5-21- ...
- (转)如何在JavaScript与ActiveX之间传递数据2
本文研究如何在JS等脚本语言与ActiveX控件之间通信,如何传递各种类型的参数,以及COM的IDispatch接口.使用类似的方法,可以推广到其他所有脚本型语言,如LUA,AutoCad等.本文将研 ...
- hellogcc -100GDB技巧
https://github.com/hellogcc/100-gdb-tips/blob/master/README.md
- Using zend-paginator in your Album Module
Using zend-paginator in your Album Module TODO Update to: follow the changes in the user-guide use S ...
- Android(java)学习笔记86:案例短信发送器
1.一般我们第一步都是先创建这个main.xml布局文件,这是良好的习惯: <?xml version="1.0" encoding="utf-8"?&g ...
- 【运维】使用FC命令辅助查杀DLL木马
使用FC命令辅助查杀DLL木马 在windows系统中,system32目录下是木马隐身的好地方,查找起来非常困难,许多木马都削尖了脑袋往那里钻,DLL木马也不例外.针对这一点用户可以在安装好系统和必 ...
- 关于快速排序的Java代码实现
快速排序(Quicksort)是对冒泡排序的一种改进.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别 ...