3天学通jaxws-webservice之ws-security教程第一天.doc_第1页
3天学通jaxws-webservice之ws-security教程第一天.doc_第2页
3天学通jaxws-webservice之ws-security教程第一天.doc_第3页
3天学通jaxws-webservice之ws-security教程第一天.doc_第4页
3天学通jaxws-webservice之ws-security教程第一天.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精通jaxws-webservice之ws-security第一天Mk.yuan2012/01/09目录前言:3jax-ws集成SSH框架31. 引入两个额外的jar包32. 修改applicationContext.xml文件43. 们的webservice54. 们的webservice成wsdl与生成相关的服务类65. 开发客户端7前言:在前面的“5天学会jaxws-webservice教程”,我们讲了基本的jax-ws的使用。Jax-ws是业界公认的标准的webservice,它已经成为了一个行业界标准,包括cxf,其实cxf也是调用的jax-ws为标准的基于spring的webservice框架。同时,大家都知道世界上除了j2ee体系外,还存在.net体系,同时有过相关经验的同事们也知道用ws-security无非就是涉及到“加密”,“解密”,而JAVA的x509所涉及到的证书,公钥,私钥与.net体系之间是无法通用的。但是webservice是因该属于无所谓语言的一个标准,因此为了让j2ee的webservice与.net的webservice能够互相调用(当然包括ws-security里的加密解密),SUN与微软联合推出了一个:WCF。WCF是Windows Communication Foundation的缩写,原来代号为Indigo,它是MS为SOA(Service Oriented Architecture 面向服务架构)而设计的一套完整的技术框架。利用它能够开发出分布式(Distributed)应用程序,而且开发难度相比以前的.NET Remoting和ASP.NET XML Web Service等都有了大幅度的降低。那么搞J2EE的人如何去支持这个WCF呢?我们不可能去用.net的语言在J2EE工程中写符合WCF的Webservice?因此,SUN在jax-ws上推出了一套框架叫:metro,用于支持WCF的webservice.在下面的介绍中,我们会先以一个jax-ws结合SSH框架的例子来作为一个承上启下的开头,现在开始我们的ws-security之旅吧。该教程为基础篇,不涉及到QoS与wcf相关,只有阅读完了本教程,才能过渡到真正的jax-ws的ws-security。真正的可扩展的符合wcf标准的Webservice QoS会在另一篇教程中(METRO)详细介绍。jax-ws集成SSH框架1. 引入两个额外的jar包jaxws-spring-1.8.jar与xbean-spring-2.8.jar。2. 修改applicationContext.xml文件请注意红色加粗部分。 上面的描述,使得我们的Spring容器根据JAVA类: com.cts.pip.ws.RoleQuery生成相应的wsdl。 这边的: wss:binding url映射的是我们的web.xml中映射的相应的servlet url。来看我们的web.xml中如何去映射我们的servlet url的:jaxws-servletcom.sun.xml.ws.transport.http.servlet.WSSpringServletjaxws-servlet/roleQueryService3. 们的webservicepackage com.cts.pip.ws;import javax.annotation.Resource;import javax.jws.WebMethod;import javax.jws.WebService;import org.apache.log4j.Logger;import com.cts.pip.dto.*;import java.util.*;import com.cts.pip.service.*;WebServicepublic class RoleQuery protected Logger log = Logger.getLogger(this.getClass();ResourceRoleService roleService;WebMethodpublic List getRoles()List roleList=new ArrayList();tryroleList=roleService.queryRole();(roleList Size=+roleList.size();return roleList;catch(Exception e)log.error(e);return null;可以看到,我们的这个类,可以直接annotation进一个由spring容器管理的service层,层我们的webservice可以集成spring,调用spring context中管理的任何资源,相信这个实用阶值会比较大吧,对吧?呵呵。4. 们的webservice成wsdl与生成相关的服务类(如何编译参考5天学会jaxws-webservice教程第一天)。把这个web应用发布到tomcat中去,启动tomcat。输入:http:/localhost:8080/backendmanagement/roleQueryService?wsdl我们可以得到wsdl的输出。打开soapui,生成一个soap测试客户端:测试一下我们的soap测试客户端:可以看到右边我们得到了3条输出,这就是webservice通过spring的service,spring的service通过hibernate的dao获得到数据的soap包。代表我们的webservice服备端已经发布成功。5. 开发客户端这边如何编译,如何引用wsdl生成客户端所需要的stub一并滤过,详细请参见:5天学会jaxws-webservice教程第一天中相关的内容,下面只给出实现的客户端,在这边我们使用的polling方式的webservice客户端。package com.cts.pip.ws;import javax.xml.ws.*;import java.util.*;import com.cts.pip.ws.*;import ctsjavacoe.ws.fromjava.CollectionWS;import ctsjavacoe.ws.fromjava.RtnMethodResponse;public class JAXWSSPRINGPollingClient public static void main(String args) throws Exception RoleQueryService service = new RoleQueryService();RoleQuery port = service.getRoleQueryPort();Response getRoleAsync = port.getRolesAsync();while (!getRoleAsync.isDone() System.out.println(is not done);List rtnList = new ArrayList();try GetRolesResponse getRolesResponse = getRoleAsync.get();rtnList = getRolesResponse.getReturn();System.out

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论