在之前的介绍里,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,整个过程的流程图大约为:
![](http://dl.iteye.com/upload/attachment/0062/5278/1f45ed03-6d68-35fc-ba44-f26ef01bcf9a.png)
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://dl.iteye.com/upload/attachment/0062/5287/28817bb7-689d-32db-a1bd-1f22758df1b7.png)
参考:http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0062/5278/1f45ed03-6d68-35fc-ba44-f26ef01bcf9a-thumb.png)
- 大小: 24.6 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0062/5287/28817bb7-689d-32db-a1bd-1f22758df1b7-thumb.png)
- 大小: 4.4 KB
分享到:
相关推荐
`SOAP` Web服务通常基于`WSDL`(Web服务描述语言)进行定义,而`JAX-WS`(Java API for XML Web Services)则是Java平台上的标准框架,用于处理`SOAP`消息并构建`SOAP` Web服务。本篇文章将详细介绍`JAX-WS`以及在...
通过学习和实践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...
JAX-WS是Java平台上用于创建Web服务的标准API,它简化了开发和部署基于SOAP(Simple Object Access Protocol)的Web服务和客户端应用程序的过程。 **描述分析:** 描述提到“tomcat+webservice实现简单的web服务...
**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"应该包含了详细...
Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准,用于构建和部署Web服务。JAX-WS RI(Reference Implementation)是这个规范的官方参考实现,它提供了开发、测试和运行基于SOAP(Simple Object ...
本教程将详细介绍如何在Myeclipse 8.5中使用JAX-WS开发和部署Web服务。 首先,我们需要理解Web服务的基础概念,包括WSDL(Web Services Description Language)、SOAP(Simple Object Access Protocol)以及XML...
完成以上配置后,我们可以构建并部署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...
部署JAX-WS服务到Tomcat通常涉及到配置Web应用的web.xml文件,并将服务类打包成WAR文件。 4. **基于注解的开发**:JAX-WS允许开发者使用如`@WebService`、`@SOAPBinding`、`@WebMethod`等注解来声明服务接口和服务...
在本教程中,我们将深入探讨如何在MyEclipse 6.5版本中使用JAX-WS(Java API for XML Web Services)技术开发Web服务。这是一个非常实用的指南,旨在帮助开发者快速掌握Webservice的创建、部署和测试过程,特别适合...
JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于构建和部署Web服务。JAX-RI(Java API for XML Web Services Reference Implementation)是这个规范的一个参考实现,它为开发者提供了一个完整...
对于服务端,你可以将实现类打包成WAR文件,部署到支持JAX-WS的Servlet容器(如Tomcat)上。客户端则可以作为独立的应用程序运行,或者集成到其他项目中。 ### 5. 扩展与优化 - **安全性**:可以通过添加安全层...
带有 JAX-RS 的 RESTful Web 服务 带有 JAX-RS 的基本 RESTful Web 服务 如何运行应用程序 传统上(需要 maven 和 wildfly) 下载野蝇 开始野蝇 $ WILDFLY_HOME/bin/standalone.sh & 使用 maven 部署 $ mvn ...
在IT行业中,Java应用开发经常涉及到服务的提供与调用,而JAX-WS(Java API for XML Web Services)就是Java平台上的一个标准,用于构建和部署Web服务。JAX-WS允许开发者使用面向对象的方式创建、消费Web服务,它极...
8. **部署Web服务**:创建一个包含WS-JAX服务的Java项目,编译成WAR文件,然后将其复制到Tomcat的`webapps`目录。Tomcat会自动检测新文件并进行部署。 9. **测试Web服务**:一旦部署完成,可以使用SOAP客户端(如...