一月收集几个有用的谷歌Chrome插件 postman for webservice
http://www.poluoluo.com/jzxy/201301/194875.html
Postman – REST Client
Postman是一个工具的帮助开发人员提高工作效率的API,他是一个功能强大的的HTTP REST客户端,是前端模拟发送数据/调试的好工具。
WebService JAX-RPC / JAX-WS
Web 服务提示与技巧: JAX-RPC 与 JAX-WS 的比较
http://www.ibm.com/developerworks/cn/webservices/ws-tip-jaxwsrpc.html
引言
Russell Butek (butek@us.ibm.com), IT 专家, EMC
Nicholas Gallardo (nlgallar@us.ibm.com), 软件工程师, EMC
简介:
JAX-WS 2.0 是 JAX-RPC 1.1 的后续版本。
本文将引出对这两个 Java Web 服务编程模型进行比较的一系列文章。
Russell Butek 是 IBM 的一名 SOA 和 Web 服务顾问。
他曾是 IBM WebSphere Web 服务引擎的开发人员之一。
他也是 JAX-RPC Java Specification Request (JSR) 专家组的成员。
他参与了 Apache 的 AXIS SOAP 引擎的实现,并推动 AXIS 1.0 遵守 JAX-RPC。
Digester
http://commons.apache.org/digester/
Digester API 2.0
http://commons.apache.org/digester/commons-digester-2.0/docs/api/
Digester Example
http://www.ibm.com/developerworks/java/library/j-lucene/
Digester Download
http://commons.apache.org/digester/download_digester.cgi?Preferred=http%3A%2F%2Flabs.xiaonei.com%2Fapache-mirror
http://labs.xiaonei.com/apache-mirror/commons/digester/binaries/commons-digester-2.0-bin.tar.gz
http://labs.xiaonei.com/apache-mirror/commons/digester/binaries/commons-digester-2.0-bin.zip
http://labs.xiaonei.com/apache-mirror/commons/digester/source/commons-digester-2.0-src.tar.gz
http://labs.xiaonei.com/apache-mirror/commons/digester/source/commons-digester-2.0-src.zip
Web Service 性能测试工具 soapUI , Jmeter
http://www.51testing.com/?action_viewnews_itemid_93122.html
计时机制
JMeter 用的是System.currentTimeMillis();
soapUI用的是System.nanoTime(); soapUI-x32-4_0_0.exe
几种基于HTTP协议的RPC性能比较
http://jspengxue.iteye.com/blog/48124
WebService是用牺牲性能来换取跨平台的远程过程调用或者消息交换的。由于采用了SOAP这样的标准协议,才可能得到很多支持。如果你绕过SOAP,你的东西就不能称为WebService的了,但可以算是借鉴了它的实现思想的一种结构。
比如你完全可以基于底层的协议来实现internet上2个程序之间的交互,但是这个开发量很大的。因为基于SOAP的Webservice已经得到了几 乎所有的开发工具的支持,所以开发量就小多了,它解决了不同语言的数据结构不同的问题,比如你可以用java写一个方法,在服务器端发布成一个 Webservice,而另外的人可以用delphi,c#等各种支持标准webservice的语言来调用你用java写的方法,而不用关心java的 String和delphi的TString在内存里是不同的东西。
至于性能,由于不知道你的应用是什么应用,Webservice的性能比直接调用方法肯定要慢,毕竟要把数据组织成XML,但是在目前的硬件性能下,这些已经不是瓶颈了。倒是对带宽的要求比较高一些。毕竟XML比较大。
referrence
http://www.w3.org/2002/ws/ Web Services Activity
http://blog.sina.com.cn/s/blog_4d6be6f301000bsz.html
http://blog.csdn.net/kay5804/archive/2008/05/04/2382428.aspx
http://hi.baidu.com/lioliang/blog/item/03e134a4887e1ef29152ee6a.html
http://www.blogjava.net/zhuyuanxiang/archive/2008/03/03/183377.html
download axis1.4
http://apache.mirror.phpchina.com/ws/axis/1_4/
http://apache.mirror.phpchina.com/ws/axis/1_4/axis-bin-1_4.zip
http://apache.mirror.phpchina.com/ws/axis/1_4/axis-src-1_4.zip
copy
D:\program\webService\axis\axis-bin-1_4\axis-1_4\webapps\axis
to
D:\tomcat5\webapps\axis
download other jars
mail.jar: D:\program\webService\axis\javamail-1.4.1\mail.jar
http://java.sun.com/products/javamail/downloads/index.html
http://java.sun.com/products/javabeans/glasgow/jaf.html
Activation.jar : D:\program\webService\axis\jaf-1.0.2\activation.jar
http://java.sun.com/products/javabeans/jaf/downloads/index.html
xmlsec.jar: D:\program\webService\axis\xml-security-1_4_2\libs\xmlsec-1.4.2.jar
http://xml.apache.org/security/dist/java-library/
to
D:\tomcat5\webapps\axis
deploy
info
http://localhost/axis/happyaxis.jsp
Needed Components
- Found SAAJ API ( javax.xml.soap.SOAPMessage ) at D:\tomcat5\webapps\axis\WEB-INF\lib\saaj.jar
- Found JAX-RPC API ( javax.xml.rpc.Service ) at D:\tomcat5\webapps\axis\WEB-INF\lib\jaxrpc.jar
- Found Apache-Axis ( org.apache.axis.transport.http.AxisServlet ) at D:\tomcat5\webapps\axis\WEB-INF\lib\axis.jar
- Found Jakarta-Commons Discovery ( org.apache.commons.discovery.Resource ) at D:\tomcat5\webapps\axis\WEB-INF\lib\commons-discovery-0.2.jar
- Found Jakarta-Commons Logging ( org.apache.commons.logging.Log ) at D:\tomcat5\bin\commons-logging-api.jar
- Found Log4j ( org.apache.log4j.Layout ) at D:\tomcat5\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar
- Found IBM's WSDL4Java ( com.ibm.wsdl.factory.WSDLFactoryImpl ) at D:\tomcat5\webapps\axis\WEB-INF\lib\wsdl4j-1.5.1.jar
- Found JAXP implementation ( javax.xml.parsers.SAXParserFactory ) at an unknown location
- Found Activation API ( javax.activation.DataHandler ) at D:\tomcat5\webapps\axis\WEB-INF\lib\activation.jar
Optional Components
- Found Mail API ( javax.mail.internet.MimeMessage ) at D:\tomcat5\webapps\axis\WEB-INF\lib\mail.jar
- Found XML Security API ( org.apache.xml.security.Init ) at D:\tomcat5\webapps\axis\WEB-INF\lib\xmlsec-1.4.2.jar
- Found Java Secure Socket Extension ( javax.net.ssl.SSLSocketFactory ) at an unknown location
http://fsun.iteye.com/blog/80180
AXIS Service Config Sucess!
AXIS Service test
将SayHello.java改为SayHello.jws放入D:\tomcat5\webapps\axis\
//package com.lindows.service; //AxisService 基本数据类型 public class SayHello { // 这个类没有包,注意了. public String say(String name) { return " Hello ~~" + name; } }
http://localhost/axis/SayHello.jws ok
AXIS Client test
package com.lindows.client; import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class SayHello { /** * @param args * @author Lindows * 普通数据类型 */ public static void main(String[] args) { String urlname = "http://localhost/axis/SayHello.jws"; /* * 这是wsdl的绝对路径.也可以直接写成如下 ,这个没有区别. * http://localhost/axis/SayHello.jws?wsdl */ Service s = new Service(); try { Call call = (Call) s.createCall(); // 调用的目标url call.setTargetEndpointAddress(urlname); // 调用的方法名 call.setOperationName("say"); // 设置调用方法参数 String val = (String) call.invoke(new Object[] { "我是 Lindows" }); System.out.println("这里是服务器返回给你的:>>>" + val); } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }
run: 这里是服务器返回给你的:>>> Hello ~~我是 Lindows ok
JavaSE6.0 Web Service学习笔记
http://cissco.iteye.com/blog/221108
Web Service的定义
W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。
这 里我们从一个程序员的视角来观察web service。在传统的程序编码中,存在这各种的函数方法调用。通常,我们知道一个程序模块M中的方法A,向其发出调用请求,并传入A方法需要的参数 P,方法A执行完毕后,返回处理结果R。这种函数或方法调用通常发生在同一台机器上的同一程序语言环境下。现在的我们需要一种能够在不同计算机间的不同语 言编写的应用程序系统中,通过网络通讯实现函数和方法调用的能力,而Web service正是应这种需求而诞生的。
最普遍的一种说 法就是,Web Service = SOAP + HTTP + WSDL。其中,SOAP Simple Object Access Protocol)协议是web service的主体,它通过HTTP或者SMTP等应用层协议进行通讯,自身使用XML文件来描述程序的函数方法和参数信息,从而完成不同主机的异构系 统间的计算服务处理。这里的WSDL(Web Services Description Language)web 服务描述语言也是一个XML文档,它通过HTTP向公众发布,公告客户端程序关于某个具体的 Web service服务的URL信息、方法的命名,参数,返回值等。
下面,我们先来熟悉一下SOAP协议,看看它是如何描述程序中的函数方法、参数及结果对象的。
SOAP协议简介
什么是SOAP
SOAP 指简单对象访问协议,它是一种基于XML的消息通讯格式,用于网络上,不同平台,不同语言的应用程序间的通讯。可自定义,易于扩展。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
• Envelope 元素,标识XML 文档一条 SOAP 消息
• Header 元素,包含头部信息的XML标签
• Body 元素,包含所有的调用和响应的主体信息的标签
• Fault 元素,错误信息标签。
以上的元素都在 SOAP的命名空间http://www.w3.org/2001/12/soap-envelope中声明;
SOAP的语法规则
• SOAP 消息必须用 XML 来编码
• SOAP 消息必须使用 SOAP Envelope 命名空间
• SOAP 消息必须使用 SOAP Encoding 命名空间
• SOAP 消息不能包含 DTD 引用
• SOAP 消息不能包含 XML 处理指令
SOAP 消息的基本结构
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap= "http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle= "http://www.w3.org/2001/12/soap-encoding" >
- <soap:Header>
- ...
- ...
- </soap:Header>
- <soap:Body>
- ...
- ...
- <soap:Fault>
- ...
- ...
- </soap:Fault>
- </soap:Body>
- </soap:Envelope>
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding" >
- <soap:Header>
- ...
- ...
- </soap:Header>
- <soap:Body>
- ...
- ...
- <soap:Fault>
- ...
- ...
- </soap:Fault>
- </soap:Body>
- </soap:Envelope>
<? xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> ... ... </soap:Header> <soap:Body> ... ... <soap:Fault> ... ... </soap:Fault> </soap:Body> </soap:Envelope>
SOAP Envelope 元素
Envelope 元素是 SOAP 消息的根元素。它指明 XML 文档是一个SOAP 消息。它的属性 xmlns:soap的值必须是http://www.w3.org/2001/12/soap-envelope。
encodingStyle 属性,语法:soap:encodingStyle="URI"
encodingStyle 属性用于定义文档中使用的数据类型。此属性可出现在任何 SOAP 元素中,并会被应用到元素的内容及元素的所有子元素上。
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap= "http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle= "http://www.w3.org/2001/12/soap-encoding" >
- ...
- Message information goes here
- ...
- </soap:Envelope>
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding" >
- ...
- Message information goes here
- ...
- </soap:Envelope>
<? xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> ... Message information goes here ... </soap:Envelope>
SOAP Header 元素
- actor 属性,语法soap:actor="URI"
通过沿着消息路径经过不同的端点,SOAP 消息可从某个发送者传播到某个接收者。并非 SOAP 消息的所有部分均打算传送到 SOAP 消息的最终端点,不过,另一个方面,也许打算传送给消息路径上的一个或多个端点。SOAP 的 actor 属性可被用于将 Header 元素寻址到一个特定的端点。
- mustUnderstand 属性 ,语法soap:mustUnderstand="0|1"
SOAP 的 mustUnderstand 属性可用于标识标题项对于要对其进行处理的接收者来说是强制的还是可选的。假如您向 Header 元素的某个子元素添加了 "mustUnderstand="1",则要求处理此头部的接收者必须认可此元素。
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap= "http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle= "http://www.w3.org/2001/12/soap-encoding" >
- <soap:Header>
- <m:Trans
- xmlns:m= "http://www.jsoso.net/transaction/"
- soap:mustUnderstand= "1"
- soap:actor="http: //www.w3schools.com/appml/ “ >234</m:Trans>
- </soap:Header>
- ...
- ...
- </soap:Envelope>
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding" >
- <soap:Header>
- <m:Trans
- xmlns:m="http://www.jsoso.net/transaction/"
- soap:mustUnderstand="1"
- soap:actor="http://www.w3schools.com/appml/ “ >234</m:Trans>
- </soap:Header>
- ...
- ...
- </soap:Envelope>
<? xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> <m:Trans xmlns:m="http://www.jsoso.net/transaction/" soap:mustUnderstand="1" soap:actor="http://www.w3schools.com/appml/ “ >234</m:Trans> </soap:Header> ... ... </soap:Envelope>
SOAP Body 元素
必需的 SOAP Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息。Body元素中既可以包含SOAP定义的命名空间中的元素,如Fault,也可以是用户的应用程序自定义的元素。以下是一个用户定义的请求:
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap= "http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle= "http://www.w3.org/2001/12/soap-encoding" >
- <soap:Body>
- <m:GetPrice xmlns:m= "http://www.jsoso.net/prices" >
- <m:Item>Apples</m:Item>
- </m:GetPrice>
- </soap:Body>
- </soap:Envelope>
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding" >
- <soap:Body>
- <m:GetPrice xmlns:m="http://www.jsoso.net/prices" >
- <m:Item>Apples</m:Item>
- </m:GetPrice>
- </soap:Body>
- </soap:Envelope>
<? xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body> <m:GetPrice xmlns:m="http://www.jsoso.net/prices"> <m:Item>Apples</m:Item> </m:GetPrice> </soap:Body> </soap:Envelope>
上面的例子请求苹果的价格。请注意,上面的 m:GetPrice 和 Item 元素是应用程序专用的元素。它们并不是 SOAP 标准的一部分。而对应的 SOAP 响应应该类似这样:
- <?xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap= "http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle= "http://www.w3.org/2001/12/soap-encoding" >
- <soap:Body>
- <m:GetPriceResponse xmlns:m= "http://www.jsoso.net/prices" >
- <m:Price> 1.90 </m:Price>
- </m:GetPriceResponse>
- </soap:Body>
- </soap:Envelope>
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body> <m:GetPriceResponse xmlns:m="http://www.jsoso.net/prices"> <m:Price>1.90</m:Price> </m:GetPriceResponse> </soap:Body> </soap:Envelope>
SOAP Fault 元素
Fault 元素表示 SOAP的错误消息。它必须是 Body 元素的子元素,且在一条 SOAP 消息中,Fault 元素只能出现一次。Fault 元素拥有下列子元素:
常用的SOAP Fault Codes
HTTP协议中的SOAP 实例
下面的例子中,一个 GetStockPrice 请求被发送到了服务器。此请求有一个 StockName 参数,而在响应中则会返回一个 Price 参数。此功能的命名空间被定义在此地址中: "http://www.jsoso.net/stock"
- SOAP 请求:(注意HTTP的Head属性)
- POST /InStock HTTP/ 1.1
- Host: www.jsoso.net
- Content-Type: application/soap+xml; charset=utf- 8
- Content-Length: XXX
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap= "http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle= "http://www.w3.org/2001/12/soap-encoding" >
- <soap:Body xmlns:m= "http://www.jsoso.net/stock" >
- <m:GetStockPrice>
- <m:StockName>IBM</m:StockName>
- </m:GetStockPrice>
- </soap:Body>
- </soap:Envelope>
POST /InStock HTTP/1.1 Host: www.jsoso.net Content-Type: application/soap+xml; charset=utf-8 Content-Length: XXX <? xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.jsoso.net/stock"> <m:GetStockPrice> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope>
- SOAP 响应:(注意HTTP的Head属性)
- HTTP/ 1.1 200 OK
- Content-Type: application/soap+xml; charset=utf- 8
- Content-Length: XXX
- <? xml version= "1.0" ?>
- <soap:Envelope
- xmlns:soap= "http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle= "http://www.w3.org/2001/12/soap-encoding" >
- <soap:Body xmlns:m= "http://www.jsoso.net/stock" >
- <m:GetStockPriceResponse>
- <m:Price> 34.5 </m:Price>
- </m:GetStockPriceResponse>
- </soap:Body>
- </soap:Envelope>
HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: XXX <? xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.jsoso.net/stock"> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope>
HTTP协议中的SOAP RPC工作流程
WSDL简介
介绍过了SOAP,让我们关注Web Service中另外一个重要的组成WSDL。
WSDL的主要文档元素
几种基于HTTP协议的RPC性能比较
http://jspengxue.iteye.com/blog/48124
有 了整体的了解后,可以发现Hessian的这个远程过程调用,完全使用动态代理来实现的,其实从客户端代码不难看 出,HessianProxyFactory的create方法就是创建接口Basic的代理类,该类实现了Basic接口,JDK的proxy类会自动 用 InvocationHandler 的实现类(该类在Hessian中表现为HessianProxy)的invoke方法体 来填充所生成代理类的方法体,从而实现远程调用,传输过程使用的是基于Http的二进制字节流。
RMI与Hessian的调用过程比较:
Hessian:客户端(basic.hello())——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果 RMI:客户端——>stub——>序列化——>skeleton——>远程方法——>序列化——>stub—— >输出结果
服务端的是一个简单的加密、解密方法,各种协议使用同一个实现的代码。
客户端是独立的java程序,分别用各种协议对服务端的方法进行调用。每一种协议循环调用n次,然后取平均值。
循环1,000次的测试
第一次
Axis --------------->> Total time: 11123 ms, Avg time: 11.123 ms Burlap ------------->> Total time: 866 ms, Avg time: 0.866 ms Hessian ------------>> Total time: 581 ms, Avg time: 0.581 ms REST --------------->> Total time: 929 ms, Avg time: 0.929 ms AxisUsingWSDL2Java ->> Total time: 11998 ms, Avg time: 11.998 ms
第二次
Axis --------------->> Total time: 11256 ms, Avg time: 11.256 ms Burlap ------------->> Total time: 816 ms, Avg time: 0.816 ms Hessian ------------>> Total time: 582 ms, Avg time: 0.582 ms REST --------------->> Total time: 919 ms, Avg time: 0.919 ms AxisUsingWSDL2Java ->> Total time: 11908 ms, Avg time: 11.908 ms
循环10,000次的测试
第一次
Axis --------------->> Total time: 88013 ms, Avg time: 8.8013 ms Burlap ------------->> Total time: 5789 ms, Avg time: 0.5789 ms Hessian ------------>> Total time: 5162 ms, Avg time: 0.5162 ms REST --------------->> Total time: 8316 ms, Avg time: 0.8316 ms AxisUsingWSDL2Java ->> Total time: 112801 ms, Avg time: 11.2801 ms
第二次
Axis --------------->> Total time: 87359 ms, Avg time: 8.7359 ms Burlap ------------->> Total time: 5784 ms, Avg time: 0.5784 ms Hessian ------------>> Total time: 5084 ms, Avg time: 0.5084 ms REST --------------->> Total time: 7983 ms, Avg time: 0.7983 ms AxisUsingWSDL2Java ->> Total time: 113234 ms, Avg time: 11.3234 ms
测试结果
Hessian最快,Burlap第二,REST第三,Axis最慢。前3种要比Axis快了10倍或者更多。
上面的测试,服务端用的是Resin-3.0.13,出于好奇,我又用Tomcat-5.5.9测试了一把,结果是Resin确实比Tomcat快些。 Tomcat-5.5.9 循环10,000次的测试
- Axis --------------->> Total time: 122551 ms, Avg time: 12 .2551ms
- Burlap ------------->> Total time: 6401 ms, Avg time: 0 .6401ms
- Hessian ------------>> Total time: 5745 ms, Avg time: 0 .5745ms
- REST --------------->> Total time: 8090 ms, Avg time: 0 .809ms
- AxisUsingWSDL2Java ->> Total time: 156908 ms, Avg time: 15 .6908ms
· 支持XML名称空间
· 用"松散"模式分析HTML或其它SGML格式
· 占用很少的存储空间(21 kbps)
· 基于Pull的分析
· 支持XML写操作
· 可选的DOM支持
· 可选的WAP支持
相关推荐
【WebService Axis和XFire(CXF)的开发流程】 在IT领域,WebService是一种基于XML的通信标准,用于构建分布式系统中的应用程序接口(API)。本篇主要介绍两种常用的WebService框架——Axis和XFire(现已被CXF合并)...
在Java中,有多个流行的WebService框架,其中包括AXIS、XFire以及本文主要讨论的Apache CXF。 AXIS是早期广泛使用的Java WebService框架,它提供了一种简单的方式来创建和消费Web服务,支持SOAP和WSDL。然而,随着...
7. **jaxrpc-api.jar**:尽管JAX-WS已经取代了JAX-RPC,但在某些老版本或特定场景下,JAX-RPC的API仍可能被引用。 把这些JAR文件复制到Tomcat安装目录的`lib`子目录下,可以确保Tomcat在启动时加载这些依赖,从而...
描述中提到的“客户端调用分析”和“webservice万能客户端”,意味着这个压缩包可能包含了一份关于如何使用Axis、JAX-WS或XFire进行Web服务客户端开发的文档。通常,这会涵盖以下内容: - 如何使用这些工具生成...
本压缩包文件提供了关于Web服务开发的详细指南,特别关注了三个主流的Java Web Service框架:Axis、XFire和CXF。 1. **Axis**:是由Apache软件基金会开发的开源SOAP(Simple Object Access Protocol)引擎,它是...
本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式来创建SOAP(Simple Object Access Protocol)Web服务,它集成了Java SE和Java EE平台,使得...
文件"java webservice CXF JAX-WS(SOAP) + JAX-RS(RESTfull).docx"可能包含了具体的示例代码和详细步骤,帮助理解如何在SSH环境中集成并使用CXF和JAX-RS。建议参考文档中的内容进行实践操作,以加深理解。 总的来说...
基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...
开发者可以使用诸如Apache CXF、Metro等开源框架来支持JAX-WS的开发,这些框架提供了更多的功能,如WS-Security、WS-Policy等扩展,同时简化了开发过程。 8. **示例** 在提供的链接...
Axis1, Axis2, Xfire, CXF 是四种常用的WebService框架,它们之间有着不同的特点和应用场景。本文将对这四种框架进行详细的比较和分析,以帮助开发者选择合适的框架。 XFire 是一种新一代的 WebService 平台,它...
本篇文章详细介绍了WebService的基本概念和AXIS、XFire、CXF这三个流行的Java WebService框架,以及授权认证和加密解密在WebService中的应用。这些内容对于理解和实践WebService开发具有重要价值,为开发者提供了...
3. 生成WSDL:使用Apache Axis的java2wsdl工具,或者CXF的JAX-WS注解,自动生成WSDL文件。 4. 部署服务:将生成的Java类和服务描述文件(如WSDL)部署到服务器,例如Tomcat或Jetty。 5. 消费服务:客户端可以通过...
在提供的文件中,"jax-ws-webService创建soap类型的webservice.docx"应该包含了详细的JAX-WS SOAP Web服务创建过程,而"使用jax-rs创建restful类型的webservice接口.docx"则详细阐述了JAX-RS RESTful Web服务的实现...
1. **CXF框架介绍**:CXF,全称为"Code first eXtended Framework",最初由XFire项目发展而来,后与Apache Axiom和Neethi等项目合并。CXF提供了一种从代码直接生成Web服务的方式,支持JAX-WS和JAX-RS标准,使得开发...
"Axis开发JAX-RPC WebService" 指的是使用Apache Axis框架来创建基于Java API for XML Remote Procedure Calls (JAX-RPC)的Web服务。这是一个古老但仍然有用的技术,用于构建分布式应用程序,使得不同系统之间可以...
解压后,你会看到一系列的JAR文件,这些文件包含了许多CXF的核心组件和依赖项,如Apache CXF的运行时API、SPI、WS-*协议实现等。在Java Web项目中,通常我们会把这些JAR文件放入项目的`WEB-INF/lib`目录下,或者在...
标题中的"axis2-1.8.0apache-cxf-3.4.4.rar"是一个压缩包文件,其中包含了两个重要的开源项目:Apache Axis2版本1.8.0和Apache CXF版本3.4.4。这两个项目都是用于构建和部署Web服务的重要工具,主要应用于Java开发...
【标题】"metro-jax-ws-jaxws221x.zip" 提供的是一个关于JAX-WS(Java API for XML Web Services)的开发示例,其中包含了JAX-WS 2.2.1版本的相关组件和库文件。这个压缩包是针对Java开发者设计的,用于帮助他们理解...
3. **JAX-WS和JAX-RS支持**:CXF完全支持JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services),使开发者能轻松地创建和消费这两种类型的Web服务。 4. **数据绑定**:CXF支持...
使用 Eclipse JavaEE 开发 WebService 时,若选择手动创建原生的JAX-WS服务,需要导入此jar资源(教程详见我的博文https://blog.csdn.net/weixin_50604409/article/details/116399530)。 如果您同时装有 IntelliJ ...