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 ...
随机推荐
- android中常用的尺寸单位及其关系
1 尺寸单位定义 px(pixel,像素):每个px对应屏幕上的一个点 dip或dp(device independent pixels,设备独立像素):一种基于屏幕密度的抽象单位.在每英寸160个点 ...
- 教你50招提升ASP.NET性能(二):移除不用的视图引擎
(2)Remove unused View Engines 招数2: 移除不用的视图引擎 If you're an ASP.NET MVC developer, you might not know ...
- 重启PHP命令
php-fpm重启 killall php-fpm 再执行(usr/local/php是php的安装目录)/usr/local/php/sbin/php-fpm & /usr/local/ng ...
- VK Cup 2015 - Finals, online mirror D. Restructuring Company 并查集
D. Restructuring Company Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- esui控件validatebox 通过正则判断输入 json传值
<td> @Html.TextBoxFor(m => m.ActualInvoiceFee, new { @id = "txtActualInvoiceFee", ...
- GridView拖动效果实现
GridView拖动效果实现 1. 重新GridView控件 package com.whbs.drag.widget; import com.whbs.drag.DragGridActivit ...
- 六、Socket之UDP异步传输文件-实现稳定的文件传输
上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...
- CCS5 建立SYS/BIOS工程时报错“cannot find file "./configPkg/linker.cmd" bios”的解决方法
CCS5 建立SYS/BIOS工程时报错“cannot find file "./configPkg/linker.cmd" bios”的解决方法 报错 #10008-D cann ...
- 用antlr文法编写的hermit swrl规则(分享)
/* * To change this license header, choose License Headers in Project Properties. * To change this t ...
- VIM 分割窗口
VIM 分割窗口 *08.1* 分割窗口 打开新窗口最简单的命令如下: :split 这个命令把屏幕分解成两个窗口并把光标置于上面的窗口中: +----------------------- ...