webservice的简单使用,cxf框架的的使用
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
WebService就是实现多个系统之间的远程调用技术。WebService可以实现跨语言的调用。
- WebService,顾名思义就是基于Web的服务。它使用Web(HTTP\ XML)方式,接收和响应外部系统的某种请求。从而实现远程调用.
- 我们可以调用互联网上查询天气信息Web服务,然后将它嵌入到我们的程序(C/S或B/S程序)当中来,当用户从我们的网点看到天气信息时,他会认为我们为他提供了很多的信息服务,但其实我们什么也没有做,只是简单调用了一下服务器上的一段代码而已。
- 学习WebService可以将你的服务(一段代码)发布到互联网上让别人去调用,也可以调用别人机器上发布的WebService,就像使用自己的代码一样
一.java代码调用webservice实现国内手机号码归属地查询服务
先打开http://www.webxml.com.cn/zh_cn/index.aspx 网站:找到国内手机号码归属地查询服务
进入http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx 网站
然后进入http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 网站
然后在桌面打开dos命令窗口
wsimport -s . -p com.baoyuan.ws http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
输入上面的代码 -p 后面的表示包名 可以自己定义
得到的源码和calss文件,可以将Class文件删掉,留下源码
然后创建工程,将包添加进去
编写测试代码,在http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 中找到wsdal:service 的name值为服务类
在http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 中找到wsdl:port 的那么值为代理类,可以通过服务类的getter方法获得
wsdl:operation的name值为方法,通过代理类调用
package com.baoyuan.test; import com.baoyuan.ws.MobileCodeWS;
import com.baoyuan.ws.MobileCodeWSSoap; public class TestWebService {
public static void main(String[] args) {
//实例化服务
MobileCodeWS ws = new MobileCodeWS();
//获取代理对象
MobileCodeWSSoap soap = ws.getMobileCodeWSSoap();
//通过代理对象调用方法
String info = soap.getMobileCodeInfo("18662584581", "");
System.out.println(info);
}
}
二.直接通过jdk的java代码发布webservice服务:
package com.baoyuan.server; import javax.jws.WebService;
import javax.xml.ws.Endpoint; /**
* 普通一个类实现webService发布服务
*
* @author admin
*
*/
//只需要在类上面加上webService的注解
@WebService
public class HelloService { public String sayHell(String name){
return name+"来了";
} public static void main(String[] args) {
//通过jdk提供的Endpoint.publish方法将访问地址:ip+端口+服务名称 以及 服务对象传入,发布服务
Endpoint.publish("http://localhost:8080/hello", new HelloService());
System.out.println("服务启动成功");
}
}
通过CXF框架与spring框架整合发布webservice
创建web工程
web.xml配置cxf
<?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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>cxf_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>
<!-- 配置cxf 的servlet-->
<servlet>
<servlet-name>cxfServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<init-param>
<param-name>config-location</param-name>
<!-- 两种方式classpath WEB-INF -->
<!-- 将applicationContext.xml放在src目录下
<param-value>classpath:applicationContext.xml</param-value> -->
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>cxfServlet</servlet-name>
<url-pattern>/cxf/*</url-pattern>
</servlet-mapping>
</web-app>
spring的配置文件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:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!-- 为什么使用applicationContext.xml spring和cxf整合 通过一个文件进行配置 -->
<!-- 方式一: address访问服务地址 http://ip:端口/服务名称 implementorClass实现类的全路径 -->
<jaxws:endpoint address="/moble" implementorClass="com.baoyuan.ws.service.impl.MobleAddressServiceImpl">
</jaxws:endpoint> <!-- 注册一个实现类 -->
<!-- <bean id="helloService" class="cn.itcast.cxf.HelloServiceImpl"></bean> -->
<!-- 方式二: id:如果action或service注入的时候 -->
<!-- <jaxws:server address="/hello" > <jaxws:serviceBean> <ref bean="helloService"/>
</jaxws:serviceBean> </jaxws:server> --> </beans>
创建业务接口,类名上要加webService注解
package com.baoyuan.ws.service; import javax.jws.WebParam;
import javax.jws.WebService;
/**
* 模拟根据手机号码查询归属地
* @author Administrator
*
*/
//只需要在接口上加上webService注解
@WebService
public interface MobleAddressService {
//模拟根据手机号码查询归属地 WebParam(name="mobleNo")注解表示下载后的源码参数的名字还是mobleNo不会改变
public String getMobleAddress(@WebParam(name="mobleNo")String mobleNo);
}
创建实现类
package com.baoyuan.ws.service.impl; import com.baoyuan.ws.service.MobleAddressService;
/**
* 模拟根据手机号码查询归属地
* @author Administrator
*
*/
public class MobleAddressServiceImpl implements MobleAddressService{
//模拟根据手机号码查询归属地
@Override
public String getMobleAddress(String mobleNo) {
String result=mobleNo+" 归属地:长沙";
return result;
} }
然后访问url: http://localhost:8080/cxf_server/cxf/moble?wsdl 注释:cxf_server为项目名称,/cxf为在web.xml中配置的访问服务的路径,/moble为在spring配置文件中配置的address
<wsdl:definitions xmlns:ns1="http://service.ws.baoyuan.com/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.service.ws.baoyuan.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="MobleAddressServiceImplService" targetNamespace="http://impl.service.ws.baoyuan.com/">
<wsdl:import location="http://localhost:8080/cxf_server/cxf/moble?wsdl=MobleAddressService.wsdl" namespace="http://service.ws.baoyuan.com/"></wsdl:import>
<wsdl:binding name="MobleAddressServiceImplServiceSoapBinding" type="ns1:MobleAddressService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getMobleAddress">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="getMobleAddress">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getMobleAddressResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MobleAddressServiceImplService">
<wsdl:port binding="tns:MobleAddressServiceImplServiceSoapBinding" name="MobleAddressServiceImplPort">
<soap:address location="http://localhost:8080/cxf_server/cxf/moble"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
编写客户端测试代码,下载客户端代码
wsimport -s . -p com.baoyuan.ws http://localhost:8080/cxf_server/cxf/moble?wsdl
创建工程,将下载的客户端代码复制复制过来,注意:代码可以在下载时用 -p指定包名,不允许下载完成后修改包名
编写测试代码,注意:测试时:服务端必须开启
package com.baoyuan.ws.test; import com.baoyuan.ws.MobleAddressService;
import com.baoyuan.ws.MobleAddressServiceImplService; public class TestCXF {
public static void main(String[] args) {
//实例化服务
MobleAddressServiceImplService service = new MobleAddressServiceImplService();
//创建代理对象
MobleAddressService serviceImplPort = service.getMobleAddressServiceImplPort();
//调用方法
String mobleAddress = serviceImplPort.getMobleAddress("13333532525");
System.out.println(mobleAddress);
}
}
webservice的简单使用,cxf框架的的使用的更多相关文章
- WebService通讯技术的CXF框架问题
WebService通讯技术的CXF框架问题 严重: Servlet /cxf_rs_spring threw load() exception java.lang.ClassCastExceptio ...
- 项目一:第六天 WebService写接口 和CXF框架
1 课程计划 1. webService入门(了解) 2. 基于jdk1.7开发webservice服务(了解) 3. Apache CXF框架入门(掌握) 4. 基于CXF框架搭建CRM系统(掌握) ...
- 使用CXF发布WebService服务简单实例
一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...
- 转载 WebService 的CXF框架 WS方式Spring开发
WebService 的CXF框架 WS方式Spring开发 1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0 ...
- cxf 框架 webservice
cxf 内置了一个web服务器 cxf简单入门实例 package test; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import c ...
- WebService之CXF框架
本文主要包括以下内容 ant工具的使用 利用cxf实现webservice cxf与spring整合 ajax访问webservice ant 工具 1.为什么要用到ant这个工具呢? Ant做为一种 ...
- webservice第三篇【接口开发webservice、CXF框架使用、IDEA下使用webservice、小例子】
实现接口的webservice 服务端 import javax.jws.WebService; /**面向接口的webservice发布方式 * * */ @WebService public in ...
- WebService 的CXF框架 WS独立服务之HelloWorld
WebService:不同系统不同语言的数据交互, CXF主要分为两种服务方式: 1 )JAX-WS:传输数据, xml格式,基于SOAP协议(规范:规定了xml传递数据的编码规范) ; 2 )JAX ...
- WebService 的CXF框架 WS方式Spring开发
1.建项目,导包. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
随机推荐
- java虚拟机之虚拟机类加载机制
此处主要需要知道什么是java虚拟机?java虚拟机如何进行类加载的? java语言本身是编译型和解释型的语言,先对本地的java文件进行编译,编译后会在本地生成一个class文件,而这个生成的cla ...
- C++开发者都应该使用的10个C++11特性 转
http://blog.jobbole.com/44015/// | 分类: C/C++, 开发 | 条评论 | 标签: C++, C语言 分享到: 本文由 伯乐在线 - 治不好你我就不是兽医 翻译自 ...
- 序列化模块— json模块,pickle模块,shelve模块
json模块 pickle模块 shelve模块 序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. # 序列化模块 # 数据类型转化成字符串的过程就是序列化 # 为了方便存储和网 ...
- 版本管理工具Git(3)VS2013下如何使用git
Git系列导航 版本管理工具Git(1)带你认识git 版本管理工具Git(2)git的安装及使用 版本管理工具Git(3)VS下如何使用git VS下创建项目 vs中新建项目MyGitTest201 ...
- day08_python_1124
01 昨日内容回顾 文件操作 文件操作的流程: 1,打开文件创建文件句柄. 2,对文件句柄进行操作. 3,关闭文件句柄. 读, r r+ rb r+b read() 全部读取 read(n) 读取一部 ...
- 原生js手风琴效果
//js代码 //获取li var list = document.getElementsByTagName("li")[0]; //遍历 排他 for( var i=0;i&l ...
- python面向对象的基础语法(dir内置函数、self参数、初始化方法、内置方法和属性)
面相对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...
- (转)Web.config配置文件详解
花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...
- 剑指Offer 40. 数组中只出现一次的数字 (数组)
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 题目地址 https://www.nowcoder.com/practice/e02fdb54 ...
- Ajax之Json对象序列化传参
前端部分:传入参数 "groupObject" : jsonString //对象序列化传参 var projectGroup = {}; projectGroup["i ...