6.用CXF编写基于Spring的WebService
首先是服务器端:
//实体类
public class Weather { private String region;//区域编码
private String regionName;//区域名称
private float temperature;//温度
private boolean isRain;//是否下雨 public Weather() {
super();
}
public Weather(String region, String regionName, float temperature,
boolean isRain) {
super();
this.region = region;
this.regionName = regionName;
this.temperature = temperature;
this.isRain = isRain;
} public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
public String getRegionName() {
return regionName;
}
public void setRegionName(String regionName) {
this.regionName = regionName;
}
public float getTemperature() {
return temperature;
}
public void setTemperature(float temperature) {
this.temperature = temperature;
}
public boolean isRain() {
return isRain;
}
public void setRain(boolean isRain) {
this.isRain = isRain;
} @Override
public String toString() {
return "Weather [region=" + region + ", regionName=" + regionName
+ ", temperature=" + temperature + ", isRain=" + isRain + "]";
}
}
//SEI
@WebService
public interface WeatherDao { //通过区域编码查找该地区天气情况
@WebMethod
Weather findWeatherByRegion(String region);
}
//SEI实现类
@WebService
public class WeatherService implements WeatherDao { @Override
public Weather findWeatherByRegion(String region) {
return new Weather("fjxm", "福建省厦门市", 20, true);
} }
//配置beans.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"> <!-- cxf的一些核心配置(必须引入) -->
<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" /> <!-- implementor:SEI实现类全类名 -->
<!--
address:名字可以任意取;
webService部署路径:主机名/工程名/address
wsdl文档:通过主机名/工程名/address?wsdl
不再需要手动去发布webService!
-->
<jaxws:endpoint id="weatherWS"
implementor="com.cxf.service.WeatherService"
address="/weatherws" />
</beans>
//配置web.xml,spring文件随容器启动加载
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>cxf_spring_webService_server</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 配置beans.xml -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXF Servlet</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>/*</url-pattern>
</servlet-mapping>
</web-app>
//发布该工程,查看wsdl文档: <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://service.cxf.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://dao.cxf.com/" name="WeatherServiceService" targetNamespace="http://service.cxf.com/">
<wsdl:import location="http://localhost:8080/cxf_spring_webService_server/weatherws?wsdl=WeatherDao.wsdl" namespace="http://dao.cxf.com/">
</wsdl:import>
<wsdl:binding name="WeatherServiceServiceSoapBinding" type="ns1:WeatherDao">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="findWeatherByRegion">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="findWeatherByRegion">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="findWeatherByRegionResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WeatherServiceService">
<wsdl:port binding="tns:WeatherServiceServiceSoapBinding" name="WeatherServicePort">
<soap:address location="http://localhost:8080/cxf_spring_webService_server/weatherws"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
************至此,服务器端发布成功,接下来是客户端生成代码以及配置和测试****************
//配置客户端的client-beans.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"> <!-- serviceClass:SEI -->
<!-- address:server端webService的发布地址 -->
<jaxws:client id="weatherClient"
serviceClass="com.cxf.dao.WeatherDao"
address="http://localhost:8080/cxf_spring_webService_server/weatherws" />
</beans>
//生成客户端代码同cxf生成客户端代码步骤---略
//测试
public class Test { public static void main(String[] args) {
//获取spring容器,自动创建WeatherDao实现类对象
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("client-beans.xml"); //client-beans.xml里的id
WeatherDao weatherDao = (WeatherDao) context.getBean("weatherClient");
Weather weather = weatherDao.findWeatherByRegion("fjxm");
System.out.println(weather);
}
}
执行结果:
Weather [rain=true, region=fjxm, regionName=福建省厦门市, temperature=20.0]
6.用CXF编写基于Spring的WebService的更多相关文章
- Spring整合CXF步骤,Spring实现webService,spring整合WebService
Spring整合CXF步骤 Spring实现webService, spring整合WebService >>>>>>>>>>>> ...
- 7.添加基于Spring的WebService拦截器
客户端拦截器: public class AccountInterceptor extends AbstractPhaseInterceptor<SoapMessage>{ private ...
- 使用CXF实现基于Rest方式的WebService(转)
转自:https://www.cnblogs.com/zjm701/p/6845813.html原文更清晰 本文介绍使用CXF实现基于Rest方式的WebService(CXF的版本是3.0.0) 一 ...
- 使用CXF实现基于Rest方式的WebService
本文介绍使用CXF实现基于Rest方式的WebService(CXF的版本是3.0.0) 一. 前言 Java有三种WebService规范:Jax-WS,Jax-RS,Jaxm 1. Jax-WS( ...
- 使用CXF实现基于Soap协议的WebService
本文介绍使用CXF实现基于Soap协议的WebService(CXF的版本是3.0.0) 一. 前言 Java有三种WebService规范:Jax-WS,Jax-RS,Jaxm 1. Jax-WS( ...
- Spring整合CXF,发布RSETful 风格WebService(转)
Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Sp ...
- CXF整合Spring开发WebService
刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下: 要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步: 1.打开 ...
- Spring整合CXF,发布RSETful 风格WebService
原文地址:http://www.cnblogs.com/hoojo/archive/2012/07/23/2605219.html 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有 ...
- CXF+Spring搭建webservice服务
Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS .这些 Services 可以支持多 ...
随机推荐
- C入门---位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算直接对整数在内存中的二进制位进行操作.由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快. (1),与(&)运算 ...
- linux之find命令详解
linux之find命令详解 查找文件find ./ -type f查找目录find ./ -type d查找名字为test的文件或目录find ./ -name test查找名字符合正则表达式的文件 ...
- pycharm5新版注册
##注册方法1### 0x1 ,安装 0x2 , 调整时间到2038年. 0x3 ,申请30天试用 0x4, 退出pycharm 0x5, 时间调整回来. ##注册方法2### 注册方法: 在 注册时 ...
- 实现IComparable、IComparer接口
using System;using System.Collections.Generic; public class MyClass{ public class Employee:IComparab ...
- Unity3d利用opencv保存游戏视频
脚本MyVideoWriter.cs using UnityEngine; using System.Collections; using OpenCvSharp; using OpenCvSharp ...
- NC nc5.x笔记(编辑中)
一.设置卡片界面下 金额字段负数为红色! /** * 设置卡片界面下 金额字段负数为红色! */ private void repaintBodyMoneyColor(){ if(!isListPan ...
- 我的Windows软件清单
1.evernote : 没错,这篇笔记就是用 evernote 写的,说实话,这款产品我只是在PC上用,虽然手机上也下了,不过似乎体验不是很好(可能是屏幕不够大的原因),用得非常少.这个软件里面可以 ...
- 在github上搭建博客的问题
最近想到要建立一个自己的博客,以便记录自己在学习中遇到的问题.发现github免费提供空间,正好可以利用它来搭建自己的博客.毕竟github pages免费空间,不限制流量,每次的博客改动和博客模板的 ...
- web测试方法总结
链接地址:http://www.cnblogs.com/Jessy/p/3539638.html 一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~ ...
- maven下读取资源文件的问题(转)
原文链接:http://shenchao.me/2016/04/20/maven%E4%B8%8B%E8%AF%BB%E5%8F%96%E8%B5%84%E6%BA%90%E6%96%87%E4%BB ...