前面我介绍了我使用webServices的一个过程,接下来更多了解一下。
WSDL:web service Description Language, 基于xml的web服务描述语言,就是将自己所要发布的服务描述出来,如功能,参数,路径等。这是一套标准的方法,外界可以根据它,清楚的指导它所提供的服务。
SOAP:simple object access protocol,简单对象访问协议,一种标准化得传输消息的xml消息格式,通过此协议来调用web服务。
UDDI:Universal Description,Discovery and Integration,通用描述,发现和集成服务,简单的来说就是一个服务的公共网址,大家把web服务在这里注册发布,给外界的人查找并使用。这个可有可无,直接把wsdl发给需要的人就可以了。
有时大家觉得wsdl文件难得写,不如直接生成。
1,编写你要发布的服务,如我前面提到的功能类。
2,生成wsdl文件
3,编写deploy.wsdd文件
4,发布服务,生成server-config文件
5,和前面一样
第一步:这里就把功能类作为了服务给发布出去了。前面是使用到的自动生成的服务框架代码。这里也不用担心你经常改变方法类容导致wsdl文件变化,wsdl只是提供一个服务接口,所以你也只要把方法名,参数定义好就可以了,这些不变,你的wsdl内容也不变
第二步:
java org.apache.axis.wsdl.Java2WSDL -o hello.wsdl -l http://localhost:8080/axis/services/HelloServicePortType -n HelloServicePortType com.localFunction.LocalFunction.HelloHelp
后面步骤就和前面一样了,只是这里要自己去些deploy.wsdd
我总觉的还是使用服务框架好,让功能类脱离出去,作为本地类,而不是发布服务。其实得到wsdl后,就可以按前面的步骤去做,这样就好了。
在webservice应用过程中,还有一个需要自己编写,那就是handler类了。handler作用如同filter一样。
Handler是接口,我们一般都是继承它的抽象类BasicHandler。
如:
public void invoke(MessageContext messagecontext) throws AxisFault {
System.out.println("call hanlder");
}
Handler要起作用,必须在server-config里面配置。这里又二种配法,意思就和全局变量和局部变量。
局部如:
<service name="HelloServiceHttpPort" provider="java:RPC" style="document" use="literal">
...
<requestFlow>
<handler name="a" type="java:com.webService.handler.TestHandler" />
</requestFlow>
</service>
局部就是把handler配置在你的service里面,其它service就不能引用你的handler,只能这个service用。
全局如:
</globalConfiguration>
<handler name="a" type="java:com.webService.handler.TestHandler" />
<service name="HelloServiceHttpPort" provider="java:RPC" style="document" use="literal">
...
<requestFlow>
<handler name="a" />
</requestFlow>
</service>
全局就是配置在service外面,注意也不是在globalConfiguration里面。
handler如filter一样,可以处理请求前,请求后,requestFlow代表的就是请求前,responseFlow自然是请求后,具体看你在server-config里面怎么配置。axis的handler中的involve方法并没管你是请求前,请求后,具体看你是怎么配置。如果我想在一个handler里面既有请求前和请求后怎么做了?那就直接实现java自带jax-rpc的hanlder,可以看到handleRequest,handleResponse二个方法。但是你使用的axis发布的,它只支持axis的handler,所以你直接配置在server-config里面就会报错,所以需要引用到axis的AXRPCHandler,它会处理好
<requestFlow>
<handler type="java:org.apache.axis.handlers.JAXRPCHandler">
<parameter name="className" value="com.webService.handler.HelloHandler" />
</handler>
</requestFlow>
<responseFlow>
<handler type="java:org.apache.axis.handlers.JAXRPCHandler">
<parameter name="className" value="com.webService.handler.HelloHandler" />
</handler>
</responseFlow>
服务端通过server-config可以配置好handler,可是客户端没有配置文件,该怎么做?axis的Call中有call.setClientHandlers(reqHandler, respHandler);方法,可以很好的处理好客户端方面的handler操作。
说了这么多Handler有什么用了?参考别人的:
•对客户端进行认证、授权;
•把用户的访问写入系统日志;
•对请求的SOAP消息进行加密,解密;
•为Web Services对象做缓存。
这上面将的很详细http://www.ibm.com/developerworks/cn/webservices/ws-handler/index.html
上面附带了工程,还是使用的原来的工程。
分享到:
相关推荐
NULL 博文链接:https://lujin55.iteye.com/blog/1441890
webservices的开发图片和文档适合初学者
Web Services初学者教程 供大多数初学者参考,doc文档
webservices 简单的天气预报源码,适合初学者,内附说明文档
自己整理的WebServices创建及使用,适合初学者,一看就懂
主要有C#和Java调用webservices的相关代码,适合webservices初学者使用。
Web Services实例,初学者入门,Web Services using Apache Axis2- Sample
这个是一个关于web services 的初学者适用教材,能够帮助初学者进一步对web services 的认识.
Web Services 教程详细教程,里面有Web Services 的经典的例子,是初学Web Services 的同学的选择
WebServices工程源码,适合初学者参考!
看到有朋友制作了SOAP、WSDL的教程,但我还没找到WebServices的,所以来补充一下。 PS:本教程属入门级简介性教程,适合像我一样的初学者所用。^_^
WebServices 实现原理,由北京航空航天大学提供.非常好.对初学者非常适合.
一个简单得WebServices远程服务调用案例,适合初学者。
这是一个完整的Xfire实现的java webservices 的demo,初学者可以很轻松的学会使用!
创建webservices,有利于初学者。里面有一个例子。
培训课程中的webservices课件,针对初学者所需掌握的基本概念。。
Axis2教程比较好用,适合初学者。Axis2教程比较好用,适合初学者。
花了五天时间,终于做好了asp.net mvc后台管理系统...采用的了Form身份验证,WebServices,Linq,数据加密解密,Mztreeview1.0 解决了mvc传递中文字符的问题 参考: http://www.cnblogs.com/qiaojun/articles/1436235.html