`
zzc1684
  • 浏览: 1222654 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

JAX-WS 学习四:部署到Web容器里

阅读更多

在之前的介绍里,web service的发布都是通过调用:

Java代码 复制代码 收藏代码
  1. Endpoint.publish()  

方法来启动一个java内嵌的web容器来实现的。

 

这里要介绍一下怎么把生成的web service部署到一个web容器中去。

 

还是以之前的计算器的例子为例。首先我们用wsgen工具去生成部署所需要的所有部件:

 

Java代码 复制代码 收藏代码
  1. wsgen -wsdl -keep -d ../output -cp . test.CalculatorImpl   

运行此命令时,我得到了一个错误信息:

Java代码 复制代码 收藏代码
  1. The @javax.jws.WebService.name element cannot be used in with @javax.jws.WebService.endpointInterface element  

意思是 name 属性和 endpointInterface 属性不能同时出现,只好把CalculatorImpl里的name属性先删除,回头查一下为什么会有这个错误。

 

运行完上面命令行后,我们就得到一些新文件:

  • CalculatorImplService.wsdl
  • CalculatorImplService_schema1.xsd
  • Add.java
  • AddResponse.java
  • Multi.java
  • MultiResponse.java

把他们拷到工程里去先,其中:

  1. 所有的java文件和到源码里去
  2. 新建一个wsdl目录,把wsdl文件和xsd文件放到此目录中去。

剩下的就是怎么提供一个web.xml了,使得对url的访问能被我们的web service实现类处理请求了。

 

下载:

 以前一直都是基于JDK自带的api来实现的,下面就需要用到一些jax-ws提供的lib包了。所以需要先去下一份jax-ws的实现,例如我当前使用的2.2.5的下载地址是:

http://jax-ws.java.net/2.2.5/

 

实现方式:

sun的jax-ws实现提供了两个类用来配置web容器的web.xml,实现从url到web service实现类的映射:

  • 监听类:com.sun.xml.ws.transport.http.servlet.WSServletContextListener
  • Servlet: com.sun.xml.ws.transport.http.servlet.WSServlet

 

其中WSServletContextListener又会去查找和web.xml在同一级目录下的另一个文件sun-jaxws.xml,整个过程的流程图大约为:

 

sun-jaxws.xml文件的schema可以在下载的jax-ws RI的docs目录下找着(sun-jaxws.xsd)。

 

这里直接给出calculator的web.xml和sun-jaxws.xml的一个实现:

 

Sun-jaxws.xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"  
  3.     version="2.0">   
  4.     <endpoint name="calculator" implementation="test.CalculatorImpl"  
  5.         url-pattern="/calculator" />   
  6. </endpoints>   

 

Web.xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems,    
  3. Inc.//DTD Web Application 2.3//EN"   
  4. "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">   
  5.     
  6. <web-app>   
  7.     <listener>   
  8.         <listener-class>   
  9.                 com.sun.xml.ws.transport.http.servlet.WSServletContextListener   
  10.         </listener-class>   
  11.     </listener>   
  12.     <servlet>   
  13.         <servlet-name>calculator</servlet-name>   
  14.         <servlet-class>   
  15.             com.sun.xml.ws.transport.http.servlet.WSServlet   
  16.         </servlet-class>   
  17.         <load-on-startup>1</load-on-startup>   
  18.     </servlet>   
  19.     <servlet-mapping>   
  20.         <servlet-name>calculator</servlet-name>   
  21.         <url-pattern>/calculator</url-pattern>   
  22.     </servlet-mapping>   
  23.     <session-config>   
  24.         <session-timeout>120</session-timeout>   
  25.     </session-config>   
  26. </web-app>   

按照上面的流程图就可以很清楚的理解了:

 

在初始化期间,WSServletContextListener会读取WEB-INF目录下的 sun-jaxws.xml和web.xml,将web service的实现类与某个url进行绑定,这个绑定是通过一个WSServlet类间接进行的。每次来一个请求后,WSServletContextListener就会进行拦截,根据请求的url,找到对应的web service的实现,调用其他方法。

 

依赖包

很显然,诸如 WSServletContextListener 和 WSServlet 类并不是java缺省自带的。这些类在下载的jax-ws RI的lib目录下的jar里,所以要想真正成功的运行这些web service,我们也需要把必需的依赖包加上,它们包括:

  • gmbal-api-only.jar
  • ha-api.jar
  • jaxb-impl.jar
  • jaxws-api.jar
  • jaxws-rt.jar
  • management-api.jar
  • policy.jar
  • stax-ex.jar
  • streambuffer.jar

打包

打包就不具体介绍了,总之包的结构如下:

 

 

参考http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/

分享到:
评论

相关推荐

    JAX-WS2.1用户指南

    通过学习和实践JAX-WS 2.1用户指南,开发者将能够熟练掌握Web服务的开发、部署和消费,提升其在分布式系统中的应用能力。同时,了解JAX-WS 2.1也将有助于理解后续版本(如JAX-WS 2.2)的新特性。

    jax-ws基于web容器发布webServer

    "jax-ws基于web容器发布webServer" 这个标题指的是使用Java API for XML Web Services (JAX-WS)技术在Web容器(如Tomcat、Jetty等)中部署和运行Web服务的过程。JAX-WS是Java平台上的标准,用于创建和消费SOAP...

    JAX-WS Web service

    部署Web服务到Web容器(如Tomcat 6.0)或EJB容器(如GlassFish v2),并在不同客户端应用程序中使用它们: 1. **Java SE应用程序中的Java类**:通过调用Web服务的客户端Stubs(通常由IDE自动生成)来调用服务。 2. ...

    jax-ws2.1.zip

    在Java EE环境中,JAX-WS通常与Servlet容器(如Tomcat或Glassfish)一起使用,通过部署包含Web服务的WAR(Web Application Archive)文件来实现服务的发布。同时,开发者也可以使用IDE(如Eclipse或IntelliJ IDEA)...

    JAX-WS低版本

    JAX-WS是Java平台上用于创建Web服务的标准API,它简化了开发和部署基于SOAP(Simple Object Access Protocol)的Web服务和客户端应用程序的过程。 **描述分析:** 描述提到“tomcat+webservice实现简单的web服务...

    Jax-ws RI.zip

    Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准,用于构建和部署Web服务。JAX-WS RI(Reference Implementation)是这个规范的官方参考实现,它提供了开发、测试和运行基于SOAP(Simple Object ...

    Spring3_JAX-WS

    **JAX-WS** 是一种用于构建和部署Web服务的标准API,它使用SOAP(Simple Object Access Protocol)协议进行通信。通过JAX-WS,开发者可以方便地创建服务端点(SEI,Service Endpoint Interface)并将其暴露为Web服务...

    JAX-WS 2.2 Jar包

    - **JAX-WS RI(Reference Implementation)**:JAX-WS 2.2的参考实现,包括了所有必需的库文件,例如`jax-ws-ri-2.2`这个压缩包中的内容,使得开发者可以直接在没有Web服务器支持的环境中使用JAX-WS。 使用JAX-WS ...

    jax-ws实践教程代码helloWS.zip jax-ws实践教程代码helloWS.zip

    4. **部署Web服务** 使用JAX-WS,可以通过简单的XML配置文件(如`sun-jaxws.xml`)来部署服务。这个配置文件通常放在服务类的同一目录下,指示服务器在哪里找到服务实现以及如何绑定到网络端点(即服务地址)。 5....

    JAX-WS Jar包 2.3

    在使用"jaxws-ri2.3"包时,开发者可以根据项目需求,将这些库添加到构建路径或者类路径中,然后就可以开始编写和部署JAX-WS 2.3的Web服务了。同时,对于客户端开发,可以利用`wsimport`工具自动生成客户端代码,简化...

    jax-ws jax-rs 分别创建soap和restful类型的webservice

    5. **部署和测试**:将应用部署到支持Servlet 3.0以上的Web容器,如Tomcat,然后通过HTTP客户端或浏览器直接访问URL来测试服务。 在提供的文件中,"jax-ws-webService创建soap类型的webservice.docx"应该包含了详细...

    JAX-WS WebService简明教程

    - **在Web应用程序中发布**:将Web服务作为Web应用的一部分部署到Servlet容器中。 #### 四、创建WebService客户端 - **同步调用方式** - **开发步骤**:类似地使用`wsimport`工具生成客户端代码,然后编写调用逻辑...

    使用Myeclipse-8.5开发基于JAX-WS的Web-service实例.docx

    本教程将详细介绍如何在Myeclipse 8.5中使用JAX-WS开发和部署Web服务。 首先,我们需要理解Web服务的基础概念,包括WSDL(Web Services Description Language)、SOAP(Simple Object Access Protocol)以及XML...

    webService部署tomcat需要的jax-ws jar包

    `SOAP` Web服务通常基于`WSDL`(Web服务描述语言)进行定义,而`JAX-WS`(Java API for XML Web Services)则是Java平台上的标准框架,用于处理`SOAP`消息并构建`SOAP` Web服务。本篇文章将详细介绍`JAX-WS`以及在...

    JAX-WS + Spring 实现webService示例.docx

    完成以上配置后,我们可以构建并部署Web服务。在Java应用服务器(如Tomcat)中部署包含上述组件的WAR文件,然后可以通过指定的URL(例如:http://localhost:8080/your-app/hello)访问Web服务。 总结: 本示例展示...

    jax-ws 搭建服务端所需jar包

    在Java世界中,JAX-WS(Java API for XML Web Services)是用于构建和部署Web服务的标准API,它简化了服务端开发流程,使得开发者可以方便地创建SOAP(Simple Object Access Protocol)服务。为了搭建一个JAX-WS...

    WebService之JAX-WS自学笔记

    - 可能需要额外的部署描述文件,如 `web.xml` 或者容器特定的配置文件。 **2.3.2 在 Web 应用程序中发布**: - **2.3.2.1 依赖包**:通常需要将 JAX-WS 的库文件添加到项目的 classpath 中。 - **2.3.2.2 发布步骤...

    MyEclipse6_5上基于JAX-WS开发Webservice(中文示例)

    在本教程中,我们将深入探讨如何在MyEclipse 6.5版本中使用JAX-WS(Java API for XML Web Services)技术开发Web服务。这是一个非常实用的指南,旨在帮助开发者快速掌握Webservice的创建、部署和测试过程,特别适合...

    jaxws-ri 2.3完整包

    部署JAX-WS服务到Tomcat通常涉及到配置Web应用的web.xml文件,并将服务类打包成WAR文件。 4. **基于注解的开发**:JAX-WS允许开发者使用如`@WebService`、`@SOAPBinding`、`@WebMethod`等注解来声明服务接口和服务...

    jaxws-ri2.1

    JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于构建和部署Web服务。JAX-RI(Java API for XML Web Services Reference Implementation)是这个规范的一个参考实现,它为开发者提供了一个完整...

Global site tag (gtag.js) - Google Analytics