在之前的介绍里,web service的发布都是通过调用:
Endpoint.publish()
方法来启动一个java内嵌的web容器来实现的。
这里要介绍一下怎么把生成的web service部署到一个web容器中去。
还是以之前的计算器的例子为例。首先我们用wsgen工具去生成部署所需要的所有部件:
wsgen -wsdl -keep -d ../output -cp . test.CalculatorImpl
运行此命令时,我得到了一个错误信息:
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
把他们拷到工程里去先,其中:
- 所有的java文件和到源码里去
- 新建一个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的一个实现:
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint name="calculator" implementation="test.CalculatorImpl"
url-pattern="/calculator" />
</endpoints>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>calculator</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>calculator</servlet-name>
<url-pattern>/calculator</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>120</session-timeout>
</session-config>
</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/
- 大小: 24.6 KB
- 大小: 4.4 KB
分享到:
相关推荐
通过学习和实践JAX-WS 2.1用户指南,开发者将能够熟练掌握Web服务的开发、部署和消费,提升其在分布式系统中的应用能力。同时,了解JAX-WS 2.1也将有助于理解后续版本(如JAX-WS 2.2)的新特性。
"jax-ws基于web容器发布webServer" 这个标题指的是使用Java API for XML Web Services (JAX-WS)技术在Web容器(如Tomcat、Jetty等)中部署和运行Web服务的过程。JAX-WS是Java平台上的标准,用于创建和消费SOAP...
部署Web服务到Web容器(如Tomcat 6.0)或EJB容器(如GlassFish v2),并在不同客户端应用程序中使用它们: 1. **Java SE应用程序中的Java类**:通过调用Web服务的客户端Stubs(通常由IDE自动生成)来调用服务。 2. ...
在Java EE环境中,JAX-WS通常与Servlet容器(如Tomcat或Glassfish)一起使用,通过部署包含Web服务的WAR(Web Application Archive)文件来实现服务的发布。同时,开发者也可以使用IDE(如Eclipse或IntelliJ IDEA)...
JAX-WS是Java平台上用于创建Web服务的标准API,它简化了开发和部署基于SOAP(Simple Object Access Protocol)的Web服务和客户端应用程序的过程。 **描述分析:** 描述提到“tomcat+webservice实现简单的web服务...
Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准,用于构建和部署Web服务。JAX-WS RI(Reference Implementation)是这个规范的官方参考实现,它提供了开发、测试和运行基于SOAP(Simple Object ...
**JAX-WS** 是一种用于构建和部署Web服务的标准API,它使用SOAP(Simple Object Access Protocol)协议进行通信。通过JAX-WS,开发者可以方便地创建服务端点(SEI,Service Endpoint Interface)并将其暴露为Web服务...
- **JAX-WS RI(Reference Implementation)**:JAX-WS 2.2的参考实现,包括了所有必需的库文件,例如`jax-ws-ri-2.2`这个压缩包中的内容,使得开发者可以直接在没有Web服务器支持的环境中使用JAX-WS。 使用JAX-WS ...
4. **部署Web服务** 使用JAX-WS,可以通过简单的XML配置文件(如`sun-jaxws.xml`)来部署服务。这个配置文件通常放在服务类的同一目录下,指示服务器在哪里找到服务实现以及如何绑定到网络端点(即服务地址)。 5....
在使用"jaxws-ri2.3"包时,开发者可以根据项目需求,将这些库添加到构建路径或者类路径中,然后就可以开始编写和部署JAX-WS 2.3的Web服务了。同时,对于客户端开发,可以利用`wsimport`工具自动生成客户端代码,简化...
5. **部署和测试**:将应用部署到支持Servlet 3.0以上的Web容器,如Tomcat,然后通过HTTP客户端或浏览器直接访问URL来测试服务。 在提供的文件中,"jax-ws-webService创建soap类型的webservice.docx"应该包含了详细...
- **在Web应用程序中发布**:将Web服务作为Web应用的一部分部署到Servlet容器中。 #### 四、创建WebService客户端 - **同步调用方式** - **开发步骤**:类似地使用`wsimport`工具生成客户端代码,然后编写调用逻辑...
本教程将详细介绍如何在Myeclipse 8.5中使用JAX-WS开发和部署Web服务。 首先,我们需要理解Web服务的基础概念,包括WSDL(Web Services Description Language)、SOAP(Simple Object Access Protocol)以及XML...
`SOAP` Web服务通常基于`WSDL`(Web服务描述语言)进行定义,而`JAX-WS`(Java API for XML Web Services)则是Java平台上的标准框架,用于处理`SOAP`消息并构建`SOAP` Web服务。本篇文章将详细介绍`JAX-WS`以及在...
完成以上配置后,我们可以构建并部署Web服务。在Java应用服务器(如Tomcat)中部署包含上述组件的WAR文件,然后可以通过指定的URL(例如:http://localhost:8080/your-app/hello)访问Web服务。 总结: 本示例展示...
在Java世界中,JAX-WS(Java API for XML Web Services)是用于构建和部署Web服务的标准API,它简化了服务端开发流程,使得开发者可以方便地创建SOAP(Simple Object Access Protocol)服务。为了搭建一个JAX-WS...
- 可能需要额外的部署描述文件,如 `web.xml` 或者容器特定的配置文件。 **2.3.2 在 Web 应用程序中发布**: - **2.3.2.1 依赖包**:通常需要将 JAX-WS 的库文件添加到项目的 classpath 中。 - **2.3.2.2 发布步骤...
在本教程中,我们将深入探讨如何在MyEclipse 6.5版本中使用JAX-WS(Java API for XML Web Services)技术开发Web服务。这是一个非常实用的指南,旨在帮助开发者快速掌握Webservice的创建、部署和测试过程,特别适合...
部署JAX-WS服务到Tomcat通常涉及到配置Web应用的web.xml文件,并将服务类打包成WAR文件。 4. **基于注解的开发**:JAX-WS允许开发者使用如`@WebService`、`@SOAPBinding`、`@WebMethod`等注解来声明服务接口和服务...
JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于构建和部署Web服务。JAX-RI(Java API for XML Web Services Reference Implementation)是这个规范的一个参考实现,它为开发者提供了一个完整...