微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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后面有个小点

Socketwebservice比较

Socket  是基于TCP/IP的传输层协议

Webservice是基于http协议传输数据,http是基于tcp的应用层协议

Webservice采用了基于httpsoap协议传输数据。

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-WSJAX-RSJAXM&saaj(废弃)。

Jax-ws

JAX-WS  的全称为 Java API for XML-Based Webservices ,早期的基于SOAP JAVA Web 服务规范JAX-RPCJava API For XML-Remote Procedure Call)目前已经被JAX-WS 规范取代。从java5开始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本。

采用标准SOAP(Simple Object Access Protocol)  协议传输,soap属于w3c标准。Soap协议是基于http的应用层协议,soap协议传输是xml数据。

采用wsdl作为描述语言即webservice使用说明书,wsdlw3c标准。

xmlwebservice的跨平台的基础,XML主要的优点在于它既与平台无关,又与厂商无关。

XSDW3Cwebservice制定了一套传输数据类型,使用xml进行描述,即XSD(XML Schema Datatypes),任何编程语言写的webservice接口在发送数据时都要转换成webservice标准的XSD发送。

JAX-RS

JAX-RS JAVA 针对REST(Representation State Transfer)风格制定的一套Web 服务规范,由于推出的较晚,该规范(JSR 311,目前JAX-RS 的版本为1.0)并未随JDK1.6 一起发行。

支持JAX-RS服务规范的框架有:

CXF——XFireCeltix的合并(一个IONA赞助的开源ESB,最初寄存在ObjectWeb上)。

Jersey——Sun公司的JAX-RS参考实现。

RESTEasy——JBossJAX-RS项目。

Restlet——也许是最早的REST框架了,它JAX-RS之前就有了。

 

注:REST 是一种软件架构模式,只是一种风格,rest服务采用HTTP 做传输协议

Webservicejax-ws)三要素

soap

SOAP即简单对象访问协议(Simple Object Access Protocal) 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息,简单理解为soap=http+xml

Soap协议版本主要使用soap1.1soap1.2,并且为W3C标准

SOAP 是一种网络通信协议

SOAPSimple Object Access Protocol简易对象访问协议

SOAP 用于跨平台应用程序之间的通信

SOAP 被设计用来通过因特网(http)进行通信

SOAP = HTTP+XML,其实就是通过HTTPxml数据

SOAP 很简单并可扩展支持面向对象

SOAP 允许您跨越防火墙

SOAP 将被作为 W3C 标准来发展

SOAP1.2使用

下载  jaxws-ri-2.2.8

Jaxws实现soap1.2需要加入jaxws扩展包,从sun下载jaxws-ri-2.2.8,解压jaxws-ri-2.2.8并将lib下的jar包加载到java工程中。

下载地址:https://jax-ws.java.net/

添加 BindingType

SEI实现类上添加如下注解

@BindingType(javax.xml.ws.soap.soAPBinding.soAP12HTTP_BINDING)

 

wsdl

WSDL 是基于 XML 的用于描述Web Service及其函数、参数和返回值。通俗理解Wsdlwebservice的使用说明书。也是W3C标准。

<service>     整个webservice的服务视图,它包括了所有的服务端点

<Port>       定义单个服务访问点。

<binding>    为每个端口定义消息格式和协议细节

<portType>  描述 web service可被执行的操作,以及相关的消息,通过binding指向portType

<message>   定义一个操作(方法)的数据参数(可有多个参数)

<types>        定义 web service 使用的全部数据类型

uddi

uddi 是一种目录服务,通过它,企业可注册搜索 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 . 通过服务视图,bingdingporttype

 

3调用portType方法

注解说明

WebService的注解都位于javax.jws包下:

@WebService-定义服务,在public class上边

targetNamespace:指定命名空间

nameportType名称

portNameport名称

serviceName:服务名称

@WebMethod-定义方法,在公开方法上边

operationName方法

exclude:设置为true表示此方法不是webservice方法,反之则表示webservice方法

@WebResult-定义返回值,在方法返回值前边

name:返回结果值的名称

@WebParam-定义参数,在方法参数前边

name:指定参数的名称

作用:

通过注解,可以更加形像的描述Web服务。对自动生成wsdl文档进行修改,为使用者提供一个更加清晰的wsdl文档。

修改WebService注解之后,会影响客户端生成代码调用方法名和参数名也发生了变化

Soap1.1soap1.2异同

相同之处:

soap1.1soap1.2都是使用post方法

包括Envelopebody

 

内容类型context-type不同:

soap1.1使用text/xml

soap1.2使用application/soap+xml

命名空间Envelope xmlns不同:

soap1.1使用http://schemas.xmlsoap.org/soap/envelope/

soap1.2使用http://www.w3.org/2003/05/soap-envelope



版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐