### 使用JAX-WS实现Web Service的步骤与实例详解 #### 一、引言 随着互联网技术的发展,Web服务在企业级应用中的地位越来越重要。Java API for XML Web Services(简称JAX-WS)作为Java平台上的标准Web服务API,为开发人员提供了简单而强大的工具来构建和访问Web服务。本文将详细介绍如何使用JAX-WS来实现Web Service,并通过一个具体的示例来加深理解。 #### 二、Web Service的配置与部署 ##### 2.1 配置Web应用的类库依赖 为了支持JAX-WS Web服务的运行,我们需要在项目中添加相应的依赖类库。这些类库包括但不限于: - **jaxb-impl-2.1.12.jar**:用于处理XML绑定。 - **jaxws-rt-2.1.4.jar**:JAX-WS运行时类库。 - **stax-ex-1.2.jar**:扩展的Streaming API for XML。 - **streambuffer-0.8.jar**:提供对流缓冲的支持。 这些类库通常放置在项目的`WEB-INF/lib`目录下。 ##### 2.2 配置web.xml 为了让Web容器能够识别并加载我们的Web服务,需要在项目的`web.xml`文件中进行必要的配置。具体包括以下部分: 1. **监听器配置**:用于监听Web应用程序上下文的变化,以便初始化JAX-WS相关的组件。 ```xml <listener> <listener-class> com.sun.xml.ws.transport.http.servlet.WSServletContextListener </listener-class> </listener> ``` 2. **Servlet配置**:定义了一个名为`DSWebService`的Servlet,该Servlet用于处理Web服务请求。 ```xml <servlet> <servlet-name>DSWebService</servlet-name> <servlet-class> com.sun.xml.ws.transport.http.servlet.WSServlet </servlet-class> </servlet> ``` 3. **Servlet映射**:指定`DSWebService`Servlet的URL模式,从而确定了Web服务的访问路径。 ```xml <servlet-mapping> <servlet-name>DSWebService</servlet-name> <url-pattern>/dswebservice</url-pattern> </servlet-mapping> ``` ##### 2.3 配置sun-jaxws.xml 除了`web.xml`之外,还需要在项目的`WEB-INF`目录下创建`sun-jaxws.xml`文件来进一步配置Web服务。例如: ```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="TestService" implementation="com.dscomm.minhang.eoc.web.jaxws.TestServiceImpl" url-pattern="/dswebservice"/> </endpoints> ``` 此配置指定了名称为`TestService`的服务端点,其实现类为`TestServiceImpl`,并且该服务的访问路径为`/dswebservice`。 #### 三、定义Web服务接口及实现 ##### 3.1 定义服务接口 根据JAX-WS规范,我们首先需要定义一个服务接口,该接口必须使用`@WebService`注解标记,并且每个方法都需要使用`@WebMethod`注解标记。 ```java package com.dscomm.minhang.eoc.web.jaxws; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; @WebService @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL) public interface TestService { @WebMethod public String say(String arg); } ``` ##### 3.2 实现服务接口 接下来,我们需要实现上述定义的服务接口。实现类也需要使用`@WebService`注解,并且必须指定接口类。 ```java package com.dscomm.minhang.eoc.web.jaxws; import javax.jws.WebService; @WebService(endpointInterface = "com.dscomm.minhang.eoc.web.jaxws.TestService") public class TestServiceImpl implements TestService { public String say(String arg) { System.out.println(arg); return "Hello World!"; } } ``` #### 四、测试Web服务 发布完Web服务后,可以通过访问其WSDL文件来验证服务是否成功发布。例如,在本例中,我们可以通过以下URL来获取WSDL文件: ``` http://localhost:8080/platform-web/dswebservice?wsdl ``` 如果一切正常,我们将看到一个XML格式的文档,其中包含了关于该Web服务的所有必要信息。 #### 五、客户端访问Web服务 ##### 5.1 生成客户端代码 为了方便地访问Web服务,可以使用`wsimport`命令自动生成客户端所需的代码。具体步骤如下: 1. 执行`wsimport`命令,指定WSDL文件的位置以及要生成的客户端代码的目标包名: ``` wsimport -keep -p com.dscomm.minhang.eoc.web.jaxws.client http://localhost:8080/platform-web/dswebservice?wsdl ``` 2. `wsimport`命令会生成一系列的Java文件,如`ObjectFactory.java`、`Say.java`、`SayResponse.java`等,它们将用于客户端的Web服务调用。 ##### 5.2 调用Web服务 在客户端代码中,我们可以通过以下方式来调用Web服务的方法: ```java package com.dscomm.minhang.eoc.web.jaxws.client; public class WebServiceTest { public static void main(String[] args) { TestService service = new TestServiceImplService().getTestServicePort(); String result = service.say("Hello!"); System.out.println(result); } } ``` 以上就是使用JAX-WS实现Web Service的一个完整过程,通过这个例子我们可以清晰地了解到整个流程,以及各个步骤的具体操作。
- yuanjingxin19872014-08-28没运行起来,
- wbsh5832013-04-02不错。适合初学者
- 路一铭2015-07-01很好用,直接可以导入。
- lityelf2014-01-13挺好的,不错的教程
- 普通网友2014-05-29跑不起来啊。。。。
- 粉丝: 1
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 城镇老旧小区改造(加装电梯)考评内容和评价标准表.docx
- 城镇老旧小区改造及既有住宅加装电梯赋分权重.docx
- 底板隐蔽前监理检查记录.docx
- 出差审批单(表格模板).docx
- 第三方技术服务机构消防验收项目情况工作月汇报表.docx
- 电梯质量安全风险管控清单(安装(含修理).docx
- 飞机舱位代码表.docx
- 顶板隐蔽前监理检查记录表.docx
- 高危妊娠产前评分标准表.docx
- 高温中暑病例报告卡表格.docx
- 个体工商户营业执照颁发及归档记录表.doc
- 更换输液流程表.docx
- 公务接待审批单(表格模板).docx
- 古今地名对照表.docx
- 固定资产验收单、移交清单、处置清单.docx
- 骨关节损伤鉴定标准条款表.docx