1、开发环境:
1)、jdk1.6+; 2)、JAX-WS RI 2.2.7(http://jax-ws.java.net/2.2.7/JAXWS2.2.7-20120813.zip),下载完直接解压至本地。
2、第一个WebService(服务端):
1)、先写一个服务端类:
package com.sxit.first; import javax.jws.WebMethod; import javax.jws.WebService; @WebService public class HelloWorldService { @WebMethod public String say(String name){ return "Hello :" + name; } }
@WebService是声明这是一个WebService服务。 @WebMethod是表示此为公布给外部的soap方法,有两个参数,一个input为String,一个output为String。
2)、把这个服务部署到tomcat中:新增加一个sun-jaxws.xml文件放在WEB-INF中,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> <endpoint name='FirstHelloWorld' implementation='com.sxit.first.HelloWorldService' url-pattern='/FirstHelloWorldService' /> </endpoints>
注意:sun-jaxws.xml这个文件里是配置webservice服务的相关信息。
3)、配置web.xml文件,加入监听器和servlet:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <listener> <listener-class> com.sun.xml.ws.transport.http.servlet.WSServletContextListener </listener-class> </listener> <servlet> <servlet-name>FirstHelloWorld</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>FirstHelloWorld</servlet-name> <url-pattern>/FirstHelloWorldService</url-pattern> </servlet-mapping> </web-app>
注意:这里需要配置一个监听器,servlet的名字、访问路径要和之前sun-jaxws.xml配置的endpoint name、url-pattern一致。
4)、最后项目结构是这样的,启动tomcat访问http://localhost:8080/ws/FirstHelloWorldService:
3、现在写一个客户端来调用发布好webservice:
1)、首先是得到webservice服务描述信息的地址(也就是wsdl,webservice describle language,web服务描述语言):
路径为:http://localhost:8080/Service/FirstHelloWorldService?wsdl
2)、通过wsgen服务端可生成服务的wsdl文件:
E:\Workspaces\ws\WebRoot\WEB-INF>wsgen -cp E:\Workspaces\ws\WebRoot\WEB-INF\classes com.sxit.first.HelloWorldService -wsdl -d E:\tmp\ws -s E:\tmp\ws -verbose
-cp 是指在classpath下寻找服务类 -d 是指编译后的文件(class)目录 -s 生成的本地代码(java)目录 -wsdl 生成wsdl文件
3)、客户端通过以上两种方式取得wsdl文件,保存在E:/tmp/ws目录下,然后通过wsimport命令来生成本地代码:
E:\tmp\ws>wsimport -keep -d src -s src HelloWorldServiceService.wsdl parsing WSDL... generating code... compiling code...
-d 是指编译后的class文件目录 -s 是指源代码目录
4)、最后可以在src目录下看到生成好的本地代码:
5)、把生成的service类中的file开头的wsdl路径全部换成之前的http://localhost:8080/Service/FirstHelloWorldService?wsdl,写一个客户端类:
package com.sxit.first; /** *@功能:客户端 *@作者: smile *@时间:2013-3-6 下午1:41:11 *@版本:1.0 */ public class client { public static void main(String[] args) { HelloWorldServiceService service = new HelloWorldServiceService(); System.out.println(service.getHelloWorldServicePort().say("sb")); } }6)、启动之前的那个服务,然后执行客户端,可以看到会打印出 hello sb;
1)、在WEB-INF中新建一个binding.xml:
<?xml version="1.0" encoding="UTF-8"?> <bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocation="HelloWorldServiceService.wsdl" xmlns="http://java.sun.com/xml/ns/jaxws"> <bindings node="wsdl:definitions"> <enableAsyncMapping>true</enableAsyncMapping> </bindings> </bindings>2)、重新执行wsimport命令:
E:\Workspaces\Service\WebRoot\WEB-INF>wsimport -b binding.xml -s src HelloWorldS erviceService.wsdl3)、客户端代码(轮询式):
package com.sxit.first; import javax.xml.ws.Response; /** *@功能:异步调用客户端(轮询式) *@作者: smile *@时间:2013-3-6 下午2:25:36 *@版本:1.0 */ public class Client { public static void main(String[] args) { HelloWorldServiceService service = new HelloWorldServiceService(); HelloWorldService port = service.getHelloWorldServicePort(); Response<SayResponse> sayAsync = port.sayAsync("sb"); while (!sayAsync.isDone()) { System.out.println("is not down"); } try { SayResponse callNameResponse = sayAsync.get(); String message = callNameResponse.getReturn(); System.out.println(message); } catch (Exception ex) { } } }4)、CallBack回调式:
package com.sxit.first; import java.util.concurrent.ExecutionException; import javax.xml.ws.AsyncHandler; import javax.xml.ws.Response; public class CallBackClient { public static void main(String[] args) throws Exception { HelloWorldServiceService service = new HelloWorldServiceService(); HelloWorldService port = service.getHelloWorldServicePort(); port.sayAsync("sb", new AsyncHandler<SayResponse>() { @Override public void handleResponse(Response<SayResponse> res) { try { SayResponse response = null; response = res.get(); String message = response.getReturn(); System.out.println(message); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }); Thread.sleep(1000); } }
相关推荐
`javax.xml.ws.Service`是JAX-WS规范的一部分,用于创建和实例化Web服务客户端。当这个类报错,通常是因为缺失了如wsimport工具或者相关的API依赖。而这个压缩包提供了解决这个问题的解决方案,用户只需将提供的四个...
这一步骤对于那些没有内置JAX-WS支持的轻量级应用服务器,如Tomcat来说尤其重要。 在实际应用中,使用JAX-WS进行Web服务开发时,开发者需要定义服务接口和实现,然后通过注解或部署描述符来配置服务。服务可以通过...
JAX-WS(Java API for XML Web Services)是Java平台标准版(Java SE)和企业版(Java EE)的一部分,它为创建、部署和消费基于SOAP(Simple Object Access Protocol)的Web服务提供了全面的支持。JAX-WS允许开发者...
JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和部署Web服务。WebLogic作为一款强大的Java EE应用服务器,支持JAX-WS标准,但正确配置和部署这些服务需要一些额外的步骤。本指南将详细...
JAX-WS(Java API for XML Web Services)2.0 API 是Java平台上的一个标准接口,用于创建和消费Web服务。它提供了一种简单、类型安全且与平台无关的方式来实现基于SOAP(Simple Object Access Protocol)的Web服务。...
JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式...
标题中的“一个包含jax-ws和jax-rs的例子(含服务端和客户端)”是指这是一个示例项目,它演示了如何使用Java API for XML Web Services (JAX-WS)和Java API for RESTful Web Services (JAX-RS)来创建和消费Web服务。...
基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...
JAX-WS(Java API for XML Web Services)是Java平台上用于创建Web服务的标准API,版本2.1是其一个重要里程碑。本指南将深入探讨JAX-WS 2.1的核心概念、功能以及如何在实际开发中应用它。以下是对JAX-WS 2.1的详细...
Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更方便地实现基于SOAP...
JAX-WS,全称为Java API for XML Web Services,是Java平台上的一个标准,用于构建和部署基于SOAP(Simple Object Access Protocol)的Web服务。它是Java SE和Java EE平台的一部分,简化了开发人员在Web服务领域的...
总之,“metro-jax-ws-jaxws221x.zip”是一个宝贵的资源,对于想要学习和掌握JAX-WS的开发者来说,它可以提供一个完整的实践环境,帮助理解Web服务的生命周期、客户端和服务端的交互以及如何在实际项目中应用JAX-WS...
JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...
Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于创建Web服务和客户端。它提供了一种简单、类型安全的方式来构建和消费基于SOAP的消息传递应用程序,是Java世界中实现Web服务的核心框架之一。...
**标题:“jax-ws2.1.zip”**指的是一个包含Java API for XML Web Services(JAX-WS)2.1版本的压缩包。JAX-WS是Java平台标准版(Java SE)和企业版(Java EE)的一部分,用于构建基于SOAP(Simple Object Access ...
标题提到的"JAX-WS所需Jar包"是指为了在Java环境中支持JAX-WS功能,开发者需要的一组核心库。这些库包含了运行和开发JAX-WS Web服务所必需的组件。下面将逐一解释这些库的作用: 1. **jaxb-xjc.jar**: 这是Java ...
Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。它简化了Web服务的开发,使得Java开发者能够更方便地创建、调用和部署SOAP(Simple Object Access Protocol)服务。在这个...
Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准,用于构建和部署Web服务。JAX-WS RI(Reference Implementation)是这个规范的官方参考实现,它提供了开发、测试和运行基于SOAP(Simple Object ...
在"jax-ws webservice完整demo"中,你可以通过查看源码了解每个组件的具体实现,并学习如何将它们组合在一起,形成一个完整的Web服务。此外,通过运行提供的测试代码,你可以验证Web服务是否正常工作。这个例子是一...
**标题解析:** "JAX-WS低版本" 指的是Java API for XML Web Services的一个较早的发行版。JAX-WS是Java平台上用于创建Web服务的标准API,它简化了开发和部署基于SOAP(Simple Object Access Protocol)的Web服务和...