webservice
在JAVA_HOME/bin目录下。 使用方法: 常用参数为: -d<目录>??-?将生成.class文件。默认参数。 -s<目录>?-?将生成.java文件。 -p<生成的新包名>?-将生成的类,放于指定的包下。如果不指定包名就是wsdl命名空间的倒序。 (wsdlurl)?-?http://server:port/service?wsdl,必须的参数。 示例: C:/>?wsimport?-s?.?http://127.0.0.1:1234/weather?wsdl? 注意:-s不能分开,-s后面有个小点 Socket和webservice比较Socket??是基于TCP/ip的传输层协议 Webservice是基于http协议传输数据,http是基于tcp的应用层协议 Webservice采用了基于http的soap协议传输数据。 Socket接口通过流传输,不支持面向对象。 Webservice?接口支持面向对象,最终webservice将对象进行序列化后通过流传输。 Webservice采用soap协议进行通信,不需专门针对数据流的发送和接收进行处理,是一种跨平台的面向对象远程调用技术。 Socket适用于高性能大数据的传输,传输的数据需要手动处理,socket通信的接口协议需要自定义,比如:自定义一种字符串拼接的格式,比如自定义的xml数据,自定义麻烦之处在接口调用方和接口服务端需要互相讨论确定接口的协议内容,不方便。 缺点:程序员需要自己去解析输入、输出流,解析发送和接收的数据。 数据传输的格式不固定,需要程序员开发socket接口时自定义接口协议。 优点:如果要传输大数据量,socket可以满足,如果存在大并发使用socket也可以实现,程序用socket灵活性更大,比如可以socket的高并发框架mina开发。 应用场景:如果要传输大数据,或者要高并发远程调用,完会可以使用socket实现。
? Webservcie,由于是遵循标准的soap协议,soap?协议的内容格式固定,soap协议传递的内容是xml数据,由于webservice是基于http的,所以简单理解为soap=http+xml,适用于没有性能要求情况下且数据传输量小,推荐在公开接口上使用webservice,因为soap协议的标准的。 优点: jaxws可以通过面向对象开发webservice,程序员不需要解析输入、输出流。 由于webservice传输数据使用标准的soap协议(基于http传输xml),soap协议已经被w3c管理了。 缺点:如果传输大数据量,webservice不适用。如果webservice开发大并发的应用,webservice依靠web容器提高并发数。 Webservice规范JAVA?中共有三种WebService?规范,分别是JAX-WS、JAX-RS、JAXM&SAAJ(废弃)。 Jax-wsJAX-WS??的全称为?Java?API?for?XML-Based?Webservices?,早期的基于SOAP?的JAVA?的Web?服务规范JAX-RPC(Java?API?For?XML-Remote?Procedure?Call)目前已经被JAX-WS?规范取代。从java5开始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本。 l?采用标准SOAP(Simple?Object?Access?Protocol)??协议传输,soap属于w3c标准。Soap协议是基于http的应用层协议,soap协议传输是xml数据。 l?采用wsdl作为描述语言即webservice使用说明书,wsdl属w3c标准。 l?xml是webservice的跨平台的基础,XML主要的优点在于它既与平台无关,又与厂商无关。 l?XSD,W3C为webservice制定了一套传输数据类型,使用xml进行描述,即XSD(XML?Schema?Datatypes),任何编程语言写的webservice接口在发送数据时都要转换成webservice标准的XSD发送。 JAX-RSJAX-RS?是JAVA?针对REST(Representation?State?Transfer)风格制定的一套Web?服务规范,由于推出的较晚,该规范(JSR?311,目前JAX-RS?的版本为1.0)并未随JDK1.6?一起发行。 支持JAX-RS服务规范的框架有: l?CXF——XFire和Celtix的合并(一个由IONA赞助的开源ESB,最初寄存在ObjectWeb上)。 l?Jersey——Sun公司的JAX-RS参考实现。 l?RESTEasy——JBoss的JAX-RS项目。 l?Restlet——也许是最早的REST框架了,它JAX-RS之前就有了。
?
注:REST?是一种软件架构模式,只是一种风格,rest服务采用HTTP?做传输协议 Webservice(jax-ws)三要素soapSOAP即简单对象访问协议(Simple?Object?Access?Protocal)?是一种简单的基于?XML?的协议,它使应用程序通过?HTTP?来交换信息,简单理解为soap=http+xml。
?
WSDL?是基于?XML?的用于描述Web?Service及其函数、参数和返回值。通俗理解Wsdl是webservice的使用说明书。也是W3C标准。 <service>?????整个webservice的服务视图,它包括了所有的服务端点 <Port>???????定义单个服务访问点。 <binding>????为每个端口定义消息格式和协议细节 <portType>??描述?web?service可被执行的操作,以及相关的消息,通过binding指向portType <message>???定义一个操作(方法)的数据参数(可有多个参数) <types>????????定义?web?service?使用的全部数据类型 UDDIUDDI?是一种目录服务,通过它,企业可注册并搜索?Web?services。企业将自己提供的Web?Service注册在UDDI,也可以使用别的企业在UDDI注册的web?service服务,从而达到资源共享。 UDDI旨在将全球的webservcie资源进行共享,促进全球经济合作。 但是使用webservice并不是必须使用UDDI,因为用户通过WSDL知道了web?service的地址,可以直接通过WSDL调用webservice。 ?wsdl?说明书阅读方式从下往上读 先找到服务视图,通过binging找到protType,找到了protType就找到了我们要调用的webservice方法。 查看wsdl说明要从下往上看: 1服务视图(根) ? ? 2 .?通过服务视图,bingding到porttype ? 3、调用portType的方法 注解说明WebService的注解都位于javax.jws包下: @WebService-定义服务,在public?class上边 targetNamespace:指定命名空间 name:portType的名称 portName:port的名称 serviceName:服务名称 @WebMethod-定义方法,在公开方法上边
@WebResult-定义返回值,在方法返回值前边
@WebParam-定义参数,在方法参数前边
作用: 通过注解,可以更加形像的描述Web服务。对自动生成的wsdl文档进行修改,为使用者提供一个更加清晰的wsdl文档。 当修改了WebService注解之后,会影响客户端生成的代码。调用的方法名和参数名也发生了变化 Soap1.1与soap1.2异同相同之处:
?
内容类型context-type不同:
命名空间Envelope?xmlns不同: soap1.1使用http://schemas.xmlsoap.org/soap/envelope/ soap1.2使用http://www.w3.org/2003/05/soap-envelope
来自为知笔记(Wiz)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |