web服务协议栈.docx
《web服务协议栈.docx》由会员分享,可在线阅读,更多相关《web服务协议栈.docx(10页珍藏版)》请在冰豆网上搜索。
web服务协议栈
竭诚为您提供优质文档/双击可除
web服务协议栈
篇一:
对webservice的一下理解
xml,用于传输格式化的数据,是web服务的基础。
namespace-命名空间。
xmlns=“”使用默认命名空间。
xmlns:
itcast=“”使用指定名称的命名空间。
名词2:
wsdl–webservicedescriptionlanguage–web服务描述语言。
通过xml形式说明服务在什么地方-地址。
通过xml形式说明服务提供什么样的方法–如何调用。
名词3:
soap-simpleobjectaccessprotocol(简单对象访问协议)
soap作为一个基于xml语言的协议用于有网上传输数据。
soap=在http的基础上+xml数据。
soap是基于http的。
soap1.1,soap1.2
soap的组成如下:
envelope–必须的部分。
以xml的根元素出现。
headers–可选的。
body–必须的。
在body部分,包含要执行的服务器的方法。
和发送到服务器的数据。
在jdk1.6中jax-ws规范定义了如何发布一个webservice服务。
jax-ws是指javaapiforxml–webservice.
用jdk1.6.0_21以后的版本发布一个webservice服务.
与web服务相关的类,都位于javax.jws.*包中。
主要类有:
@webservice-它是一个注解,用在类上指定将此类发布成一个ws.
endpoint–此类为端点服务类,它的方法publish用于将一个已经添加了@webservice注解对象绑定到一个地址的端口上。
jax(javaapiforxml)-ws规范是一组xmlwebservices的jaVaapi。
jax-ws允许开发者可以选择Rpc-oriented或者message-oriented来实现自己的webservices。
在jax-ws中,一个远程调用可以转换为一个基于xml的协议例如soap。
在使用jax-ws过程中,开发者不需要编写任何生成和处理soap消息的代码。
jax-ws的运行时实现会将这些api的调用转换成为对应的soap消息。
在服务器端,用户只需要通过java语言定义远程调用所需要实现的接口sei(serviceendpointinterface),并提供相关的实现,通过调用jax-ws的服务发布接口就可以将其发布为webservice接口。
在客户端,用户可以通过jax-ws的api创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
当然jax-ws也提供了一组针对底层消息进行操作的api调用,你可以通过dispatch直接使用soap消息或xml消息发送请求或者使用provider处理soap或xml消息。
通过webservice所提供的互操作环境,我们可以用jax-ws轻松实现jaVa平台与其他编程环境(.net等)的互操作。
jax-ws与jax-Rpc之间的关系
sun最开始的webservices的实现是jax-Rpc1.1(jsR101)。
这个实现是基于java的Rpc,并不完全支持schema规范,同时没有对binding和parsing定义标准的实现。
jax-ws2.0(jsR224)是sun新的webservices协议栈,是一个完全基于标准的实现。
在binding层,使用的是thejavaarchitectureforxmlbinding(jaxb,jsR222),在parsing层,使用的是thestreamingapiforxml(stax,jsR173),同时它还完全支持schema规范。
1:
jdk1.6._07以后jdk版本发布webservice时必须要完整的对代码进行注解,如果使用的是jdk1.6.0_21以后版本,因为它已经内含了ws2.1所以,可以只对类添加
@webservice的注解.
以下是两段不同的代码:
在jdk1.6.0_13的版本上发布的ws:
packagecom.itcast;
importjavax.jws.webmethod;
importjavax.jws.webservice;
importjavax.jws.soap.soapbinding;
importjavax.jws.soap.soapbinding.style;
importjavax.xml.ws.endpoint;
@webservice(targetnamespace="http:
//loalhost:
9999/helloworld")
@soapbinding(style=style.Rpc)//只支持Rpc的消息风格
publicclasshelloworld{
//以下通过@webmethod注解,对外公开方法
@webmethod
publicstringsayhello(){
return"helloworld";
}
publicstaticvoidmain(string[]args){
endpoint.publish("http:
//localhost:
9999/helloworld",newhelloworld());
}
}
2:
以下是在jdk1.6.0_24上发布的webservice代码:
packagecom.itcast;
importjavax.jws.webservice;
importjavax.xml.ws.endpoint;
@webservice//注意只有此一个注解,此注解也是必须的,默认的soap消息风格为:
document
publicclasshelloworld{
publicstringsayhello(){
return"helloworld";
}
publicstaticvoidmain(string[]args){
endpoint.publish("http:
//localhost:
9999/helloworld",newhelloworld());
}
1、在类上添加@webservice注解。
这是jdk1.6提供的一个注解。
它位于:
javax.jws.*包中。
2、通过endpoint(端点服务)发布一个webservice。
endpoint也是jdk提供的一个专门用于发布服务的类,它的publish方法接收两个参数,一个是本地的服务地址,二是提供服务的类。
它位于javax.xml.ws.*包中。
staticendpoint.publish(stringaddress,objectimplementor)
在给定地址处针对指定的实现者对象创建并发布端点。
stop方法用于停止服务。
endpoint发布完成服务以后,将会独立的线程运行。
所以,publish之后的代码,可以正常执行。
其他注意事项:
给类添加上@webservice注解后,类中所有的非静态方法都将会对外公布。
不支持静态方法,final方法。
-
如果希望某个方法(非static,非final)不对外公开,可以在方法上添加
@webmethod(exclude=true),阻止对外公开。
如果一个类上,被添加了@webservice注解,则必须此类至少有一个可以公开的方法,否则将会启动失败。
packagecn.leaf.two;
importjava.util.date;
importjavax.jws.webmethod;
importjavax.jws.webservice;
importjavax.xml.ws.endpoint;
/**
*发布第一个web服务
*@author张兆发
*/
@webservice
publicclassoneservice{
//以下方法由于是final的,所以不会对外公开
publicfinalstringsayhi(stringname){
returnname+",你好,现在时间是:
"+newdate();
}
//通过exclude=true,设置在发布时不包含此方法
@webmethod(exclude=true)
publicstringsayhi1(stringname){
returnname+",你好,现在时间是:
"+newdate();
}
publicstringsayhi2(stringname){
returnname+",你好,现在时间是:
"+newdate();
}
publicstaticvoidmain(string[]args)throwsexception{
//发布服务
endpointend=endpoint.publish("http:
//127.0.0.1:
9999/one",newoneservice());system.out.println(“服务发布成功”);
thread.sleep(2000);
end.stop();
}
}
importjavax.jws.webservice;
importjavax.xml.ws.endpoint;
/**
*第一个webservice服务应用
*/
//通过注解,标明此类发布为一个webservice
@webservice
篇二:
开发webservice服务流程
基本概念:
1,什么是web服务?
web是使应用程序可以以与平台和编程语言无关的方式进行相互通信的一项技术。
web服务是一个软件接口,它描述了一组可以在网络上通过标准化的xml消息传递访问的操作。
它使用基于xml语言的协议来描述要执行的操作或者要与另一个web服务交换的数据。
一组以这种方式交互的web服务在面向服务的体系结构(service-orientedarchitecture,soa)中定义了特殊的web服务应用程序。
2,什么是soap?
soap(simpleobjectaccessprotocol)简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的轻量级协议,是一个基于xml的协议。
使用soap,不用考虑任何特定的传输协议(最常用的还是http协议),可以允许任何类型的对象或代码,在任何平台上,以任何一种语言相互通信。
soap包括四个部分:
soap封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;soap编码规则(encodingrules),用于表示应用程序需要使用的数据类型的实例;soapRpc表示(Rpcrepresentation),表示远程过程调用和应答的协定;soap绑定(binding),使用底层协议交换信息。
应用中比较关注的是envelop,由一个或多个header和一个body组成。
soap在可互操作的基础web服务协议栈中的位置:
3,什么是axis
axis本质上就是一个soap引擎(apacheaxisisanimplementationofthesoap),提供创建服务器端、客户端和网关soap操作的基本框架。
但axis并