java6:Java6中实现Web服务来源: 发布时间:星期三, 2008年12月24日 浏览:2次 评论:0
在第 2章中我们演示了如何使用基本POX-over-HTTP思路方法来实现Web服务同时我们也介绍了SOAPSOAP现在已经成为业界不可或缺技术和标准当今大多数跨越合作伙伴B2B消息传输都是基于SOAP协议但SOAP(简单对象访问协议)是否象它名字喻示那样“简单”人们仍有争议但有点是毋庸置疑SOAP是种开放标准业界提供了支持SOAP开发工具和框架对SOAP进行了广泛支持几乎所有Web服务堆栈都采用了SOAP作为网络传输协议基于JavaWeb服务框架更是如此为了使用Java实现您自己Web服务或者在Java代码中访问第 3方提供Web服务您需要了解您有多种思路方法来实现Web服务本章就来向您介绍在Java/J2EE环境下实现Web服务主要思路方法它们分别是: (1) 使用JAX-WS 2.0来实现Web服务 (2) 使用Apache Axis来实现Web服务 (3) 使用Spring来实现Web服务 (4) 使用XFire来实现Web服务 我们将通过代码例子从头开始演示如何使用上面 4种技术框架来创建Web服务以及如何在代码中访问已有Web服务 使用JAX-WS 2.0来实现Web服务 JAX-WS是Java API for XML Web Service(XML Web服务Java编程接口)缩写JAX-WS2.0规范标准替代了以前JAX-RPC1.0规范标准它是基于JSR224规范标准下代Web服务开发编程接口 JAX-WS2.0基础 JAX-WS2.0项目是在JAX-WS规范标准参考实现代码基基础上进行开发和演变您可以通过http://jax-ws.dev.java.net/ 了解这个项目现在该项目既支持JAX-WS2.0规范标准也支持JAX-WS2.1规范标准 下面列出了JAX-WS2.0实现中些新特性: (1) 直接支持基于JAXB2.0数据绑定 (2) 支持最新W3C和WS-I标准(如SOAP 1.2、WSDL 1.2和SAAJ 1.3等标准) (3) 对Java和WSDL的间映射元素据进行了标准化 (4) 易于开发 (5) 使Web服务升级变得简单 (6) 对Web服务处理器框架进行了升级 (7) 支持异步RPC和非HTTP传输 JAX-WS2.0另个令人振奋特点是它已经包含在Java6标准版内这意味着基于JAX-WS2.0代码和组件能在任何和J2EE兼容服务器(如GlassFish服务器)上运行同时也可以在Java6标准版环境下运行这对Java开发者来说确实是个很大优势而此前只有.Net开发者享有这项权利(.Net栈支持轻量级Web服务开发) 在Java6平台下JAX-WS2.0提供了以下全新API用于创建Web应用和Web服务 API API所在包 JAX-WS javax.xml.ws SAAJ javax.xml.soap WS Metadata javax.jws 在Java6标准版中实现Web服务 下面我们先从最简单Web服务入手不使用任何应用服务器和第 3方Web服务器而只是用Java6标准版及其自带工具来开发并部署个简单Web服务 服务器及客户端代码 如前所述我们现在就开始开发这个简单Web服务这是我们第个举例具体代码请参见“ch03\01_JaxWS\JavaStandAlone”目录(译者注:本书代码请从http://www.packtpub.com/files/code/3216_Code.zip处下载) 服务器端代码由 3个Java文件构成位于\ch03\01_JaxWS\JavaStandAlone\Server\src目录下面是对代码详细解释: IHello.java IHello是个Java接口其源代码如下: public erface IHello{ String sayHello (String name); } HelloImpl.java HelloImpl 实现了IHello接口中定义业务逻辑思路方法该思路方法将暴露出来作为Web服务 import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.WebMethod; @WebService(name="IHello", serviceName="HelloService") @SOAPBinding(style=SOAPBinding.Style.RPC) public HelloImpl implements IHello{ @WebMethod(operationName = "sayHello") public String sayHello(String name){ .out.prln("HelloImpl.sayHello..."); "\nHello From Server !! : " + name; } } 在上面HelloImpl实现代码中我们可以看到个叫javax.jws.WebServiceJava注解这个@WebService注解是将个普通类定义为Web服务发布对象(亦称终端endpo)javax.jws.soap.SOAPBinding这个注解指明了如何将Web服务绑定到SOAP消息上HelloImpl只声明了个思路方法sayHello该思路方法带@WebMethod注解这个注解将会把该思路方法暴露给客户端其实要创建个JAX-WS服务并不需要IHello接口我们这里只是让大家保持良好编程习惯而已 HelloServer.java HelloServer是服务器端主类它利用javax.xml.ws.Endpo来发布Web服务其代码如下: import javax.xml.ws.Endpo; public HelloServer { public void (String args) { log("HelloServer. : Creating HelloImpl..."); IHello iHello = HelloImpl; try{ // Create and publish the endpo at the given address log("HelloServer. : Publishing HelloImpl..."); Endpo endpo1 = Endpo.publish("http://localhost:8080/Hello", iHello); log("HelloServer. : Published Implementor..."); } catch (Exception e) { .err.prln("ERROR: " + e); e.prStackTrace(.out); } .out.prln("HelloServer Exiting ..."); } } HelloClient.java Web服务客户端代码只有个Java源文件位于ch03\01_JaxWS\JavaStandAlone\Client\src目录HelloClient依赖于HelloService和IHello这两个类在我们后面对客户端代码进行编译时这两个类可以自动生成客户端源代码非常简单明了: 0
相关文章
读者评论
发表评论 |