`

更简单,更强大的JAX-WS

    博客分类:
  • REST
阅读更多

JAX-WS2.0的来历

--------------------------------------------------------------------------------
JAX-WS(JSR-224)
Java Architecture for XML Web Services的缩写,简单说就是一种用JavaXML开发Web Services应用程序的框架, 目前版本是2.0, 它是JAX-RPC 1.1的后续版本, J2EE 1.4带的就是JAX-RPC1.1, Java EE 5里面包括了JAX-WS 2.0,但为了向后兼容,仍然支持JAX-RPC. 现在,SUN又把JAX-WS直接放到了Java SE 6里面,由于JAX-WS会用到Common Annotation(JSR 250),Java Web Services Metadata(JSR 181), JAXB2(JSR 222), StAX(JSR 173), 所以SUN也必须把后几个原属于Java EE范畴的Components下放到Java SE, 现在我们可以清楚地理解了为什么Sun要把这些看似跟Java SE没有关系的Components放进来,终极目的就是要在Java SE里面支持Web Services.

JAX-WS2.0
的架构

--------------------------------------------------------------------------------
JAX-WS
不是一个孤立的框架,它依赖于众多其他的规范,本质上它由以下几部分组成
1.
用来开发Web ServicesJava API
2.
用来处理Marshal/UnmarshalXML Binding机制,JAX-WS2.0JAXB2来处理Java ObjectXML之间的映射,Marshalling就是把Java Object映射到XML,Unmarshalling则是把XML映射到Java Object.之所以要做Java ObjectXML的映射,是因为最终作为方法参数和返回值的Java Object要通过网络传输协议(一般是SOAP)传送,这就要求必须对Java Object做类似序列化和反序列化的工作,SOAP中就是要用XML来表示Java object的内部状态
3.
众多元数据(Annotations)会被JAX-WS用来描述Web Services的相关类,包括Common Annotations, Web Services Metadata, JAXB2的元数据和JAX-WS2.0规范自己的元数据.
4.Annotation Processing Tool(APT)
JAX-WS重要的组成部分,由于JAX-WS2.0规范用到很多元数据,所以需要APT来处理众多的Annotations.<JDK_HOME>/bin下有两个命令wsgenwsimport,就是用到APTCompiler API来处理碰到的Annotations,wsgen可以为Web Services Provider产生并编译必要的帮助类和相关支持文件,wsimportWSDL作为输入为Web Service Consumer产生并编译必要的帮助类和相关支持文件.
5.JAX-WS
还包括JAX-WS Runtime与应用服务器和工具之间的契约关系

JAX-WS2.0
的编程模型

--------------------------------------------------------------------------------
现在用JAX-WS2.0来编写Web Services非常简单,不像JAX-RPC,JAX-WS可以把任意POJO暴露为Web Services,服务类不需要实现接口,服务方法也没有必要抛出RMI异常.下面介绍在JDK6环境下用JAX-WS2.0开发和测试Web Services的步骤
1.
编写服务类,并用Web Services Metadata(JSR-181)标注这个服务类,我用我的另一篇BlogJDK6的新特性之十:Web服务元数据中的WSProvider类作为服务类的例子,在此我重复贴一下WSProvider类的源代码:

 

/**
* @author chinajash
*/
@WebService(targetNamespace="http://blog.csdn.net/chinajash",serviceName="HelloService")
public class WSProvider {
     @WebResult(name="Greetings")//自定义该方法返回值在WSDL中相关的描述    
     @WebMethod
     public String sayHi(@WebParam(name="MyName") String name){
         return "Hi,"+name; //@WebParam是自定义参数name在WSDL中相关的描述
     }    
     @Oneway //表明该服务方法是单向的,既没有返回值,也不应该声明检查异常
     @WebMethod(action="printSystemTime",operationName="printSystemTime")//自定义该方法在WSDL中相关的描述
     public void printTime(){
         System.out.println(System.currentTimeMillis());
     }
     public static void main(String[] args) {
         Thread wsPublisher = new Thread(new WSPublisher());
         wsPublisher.start();
     }    
     private static class WSPublisher implements Runnable{
         public void run() {
             //发布WSProvider到http://localhost:8888/chinajash/WSProvider这个地址,之前必须调用wsgen命令
             //生成服务类WSProvider的支持类,命令如下:
             //wsgen -cp . WebServices.WSProvider
             Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider());
         }        
     }
}

 

2.wsgen生成上面服务类的必要的帮助类,然后调用用EndPoint类的静态方法publish发布服务类(步骤请参考我的另一篇Blog JDK6的新特性之十:Web服务元数据),我在这里是将服务类发布到http://localhost:8888/chinajash/WSProvider
3.
wsimport为服务消费者(也就是服务的客户端)生成必要的帮助类,命令如下:
wsimport http://localhost:8888/chinajash/WSProvider?wsdl
这会在<当前目录>\net\csdn\blog\chinajash下生成客户端的帮助类,在这个例子中会生成7个类
HelloService.class
ObjectFactory.class
package-info.class
PrintSystemTime.class
SayHi.class
SayHiResponse.class
WSProvider.class
4.
在客户端用下面代码即可调用步骤1定义的Web Service
HelloService hs = new HelloService();
WSProvider ws = hs.getWSProviderPort();
System.out.println(ws.sayHi("chinajash"));
ws.printSystemTime();
调用上述代码后客户端控制台输出
hi,chinajash
服务端控制台输出服务器当前系统时间

分享到:
评论

相关推荐

    Jax-ws所需要的JAR包

    Java API for XML Web Services...总的来说,JAX-WS是Java平台上的一个强大工具,它使得开发和使用Web服务变得简单。通过理解并正确配置所需的JAR文件,开发者可以在Tomcat等服务器上顺利地实现Web服务的发布和调用。

    jax-ws api jar包

    - **可扩展性**:支持WS-Security、WS-ReliableMessaging等高级Web服务协议,以满足安全性、可靠性的需求。 5. **与JAX-RPC的区别:** - JAX-WS是JAX-RPC的后续版本,它在设计上更注重简洁性和性能,且更符合现代...

    解决weblogic部署JAX-WS需要的配置文件

    WebLogic作为一款强大的Java EE应用服务器,支持JAX-WS标准,但正确配置和部署这些服务需要一些额外的步骤。本指南将详细介绍如何解决这些问题,并提供必要的配置文件和操作步骤。 首先,我们需要了解JAX-WS的工作...

    JAX-WS API, JAX-RS API

    **JAX-WS API** Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更...

    JAX-WS2.0 API

    这使得处理XML消息变得更简单,减少了手动解析XML的必要。 6. **异常处理:**JAX-WS支持将Java异常转换为SOAP故障,反之亦然,这样客户端和服务器之间可以交换错误信息。 7. **MTOM(Message Transmission ...

    JAX-WS2.1用户指南

    JAX-WS支持WS-Security标准,提供了对Web服务的安全性增强,包括消息认证、加密和签名等,确保通信安全。 8. **错误处理** JAX-WS提供了统一的异常处理机制,能够捕获和处理Web服务调用过程中的各种错误。 9. **...

    webservice之jax-ws

    开发者可以使用诸如Apache CXF、Metro等开源框架来支持JAX-WS的开发,这些框架提供了更多的功能,如WS-Security、WS-Policy等扩展,同时简化了开发过程。 8. **示例** 在提供的链接...

    JAX-WS规范

    通过阅读该文档,读者可以更好地理解JAX-WS如何将Java接口映射到SOAP消息,以及如何发布和调用Web服务。 总结来说,JAX-WS规范为Java开发者提供了强大的Web服务开发工具,使得创建和使用Web服务变得更为简便。通过...

    如何基于JAX-WS开发一个WebService实例

    JAX-WS提供了一种简单的方式来创建SOAP(Simple Object Access Protocol)Web服务,它集成了Java SE和Java EE平台,使得开发者可以方便地实现服务接口和服务实现,然后通过工具自动生成WSDL(Web Service ...

    jax-ws webservice简单demo

    在这个"jax-ws webservice简单demo"中,我们将探讨JAX-WS的基础知识、如何创建一个简单的Web服务以及如何测试这个服务。 首先,JAX-WS的核心组件包括: 1. **Service端点接口(SEI, Service Endpoint Interface)**...

    JAX-WS低版本

    9. **安全性**:JAX-WS支持多种安全模型,包括基本认证、HTTPS、WS-Security等,以确保Web服务的安全通信。 10. **调试与测试**:开发者可以使用诸如soapUI这样的工具,通过发送SOAP请求来测试和调试JAX-WS Web服务...

    JAX-WS所需Jar包

    标题提到的"JAX-WS所需Jar包"是指为了在Java环境中支持JAX-WS功能,开发者需要的一组核心库。这些库包含了运行和开发JAX-WS Web服务所必需的组件。下面将逐一解释这些库的作用: 1. **jaxb-xjc.jar**: 这是Java ...

    jax-ws实现webservice调用

    同时,可以通过SSL/TLS、WS-Security等机制增强Web服务的安全性。 ### 7. 性能优化 为了提高性能,可以启用HTTP连接池、缓存WSDL、使用MTOM(Message Transmission Optimization Mechanism)进行二进制数据传输等...

    Jax-WS 简单实例

    Jax-WS的简单实例 Jax-WS的简单实例

    基于JDK自带的Web服务JAX-WS实现WebService的简单示例

    Java 基于第三方插件实现WebService实在麻烦,尤其是要添加几十M的Jar包...还好,自从JDK 1.6开始,Java自身已经支持WebSeervice的开发即JAX-WS,附件是一个简单的示例,供入门参考。注意,JDK环境要求1.6及以上版本。

    java实验_JAX-Ws

    Java实验_JAX-WS主要涉及的是Java平台上的Web服务开发技术,JAX-WS(Java API for XML Web Services)是Java SE和Java EE环境中用于创建和消费SOAP Web服务的标准库。这个实验旨在帮助你深入理解JAX-WS的工作原理...

    jax-ws步骤

    总的来说,JAX-WS 为 Java 开发者提供了简单易用的 Web 服务开发框架,通过注解驱动和自动生成的客户端代码,大大降低了开发复杂度。无论是开发简单的数据交换还是复杂的业务流程,JAX-WS 都能胜任。了解并熟练掌握 ...

    JAX-WS使用教程(内含jar包)

    4. **安全性**:JAX-WS提供了一套完整的安全模型,包括基本认证、TLS加密、WS-Security等,保障Web服务的安全性。 **总结** JAX-WS是Java开发者构建Web服务的重要工具,其简单易用的API和强大的功能使得创建和消费...

    学习JAX-WSWebService开发

    此外,JAX-WS还提供了多种高级特性,如MTOM(Message Transmission Optimization Mechanism)用于优化二进制数据传输,以及WS-Security用于实现Web服务的安全性。在实际开发中,了解这些特性将有助于提高Web服务的...

    JAX-WS Web service

    通过注解支持,JAX-WS使Web服务的开发变得更加简单,同时减少了运行时JAR文件的大小。 **创建Web服务** 创建一个JAX-WS Web服务通常包括以下步骤: 1. **选择开发环境**:例如,使用NetBeans IDE的Web & Java EE...

Global site tag (gtag.js) - Google Analytics