- 浏览: 913341 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
JAX-WS简写为Java Api For Xml Web Service。JAX-WS是使用XML构建Web Service与Client进行交流通信的技术。
在JAX-WS中,Web Service操作调用表现为以XML为基础的协议如SOAP协议。SOAP定义了封装架构,编码规则以及Web Service中调用和回应表现的规则。这些调用和回应在HTTP基础上以SOAP规范的消息进行传递。
尽管SOAP协议是很复杂的,但是JAX-WS隐藏了开发人员面对的复杂性。在服务器端,开发者可以通过在使用java语言接口中定义方法来制定Web Service。开发者可以编写一个或者多个类来实现这些方法。客户端程序也很容易编写。客户端会创建一个代理(表现服务器端的本地对象)并且简单的调用代理中的方法即可。在JAX-WS中,开发者不必去创建和解析SOAP消息。JAX-WS运行系统会自动完成调用和回应之间SAOP消息的转换。
使用JAX-WS,客户端和服务器端都有一个很大的优势:java编程语言的平台独立性。此外,JAX-WS并不限制:JAX-WS客户端程序可以访问不运行在java平台上的Web Servicce。这种灵活性是由于Web Service采用了W3C定义的技术规范:Http,SOAP,WSDL。
如何创建一个Web Service和Client并将他们部署。
开发一个JAX-WS Web Service首先是要定义一个类标示了javax.jws.WebService注释。@WebService注释定义了一个Web Service终端。
Service终端接口或者Service终端实现(SEI)是一个java接口和类,其中定义了客户端可以调用的方法。建立一个JAX-WS终端时接口并不是必须的。Web Service实现类定义了SEI。
你也可以通过向实现类的WebService注释中添加endpointInterface 元素来指定外部接口。之后你必须定义一个接口并且将其中需要实现的方法声明为public。
创建Web Service和Client的步骤
1. 编写实现类
2. 编译实现类
3. 添加部署Web Service必须的文件
4. 打包成WAR
5. 部署WAR文件
6. 编写Client类
7. 产生和编译连接到Service需要的文件
8. 编译Client类
9. 运行Client
JAX-WS终端要求
实现类必须注释为javax.jws.WebService或者javax.jws.WebServiceProvider。
实现类可以参考通过WebService注释中的endpointInterface元素。但是这不是必须的。如果WebService注释中没有endpointInterface元素的话,SEI会默认的为实现类定义一个。
实现类的方法必须是public,不能使final或者static。
被暴露给Web Service Client的方法必须被注释为javax.jws.WebMethod。
实现类不能使final和abstract。
实现类必须有一个默认的构造函数。
实现类不能定义finalize方法。
实现类必须在他生命周期回调函数中必须用javax.annotation.PostConstruct或者javax.annotation.PreDestroy注释。
PostConstruct方法由容器在实现类开始向Web Service Client做出反应之前调用。
PreDestroy方法由容器在终端移出操作之前调用。
编写Service终端实现类
在这个例子中,实现类Hello通过@WebService注释被定义为Service终端。Hello中有一个sayHello方法,被注释为@WebMethod。@WebMethod注释向Web Service Client暴露了被注释的方法。sayHello方法向客户段返回一通过参数name进行组装的问候字符串。这个实现类必须有一个默认的声明为public,无参数的构造函数。
- package helloservice.endpoint;
- import javax.jws.WebService;
- @WebService
- public class Hello {
- private String message = new String("Hello, ");
- public void Hello() {}
- @WebMethod
- public String sayHello(String name) {
- return message + name + ".";
- }
- }
package helloservice.endpoint; import javax.jws.WebService; @WebService public class Hello { private String message = new String("Hello, "); public void Hello() {} @WebMethod public String sayHello(String name) { return message + name + "."; } }
简单的JAX-WS客户端
HelloClient是一个可以访问Hello对象的sayHello方法的独立的客户端程序。这个调用是通过一个本地对象port实现的,当然这个本地对象port是远程Service对象的一个代理。
编写客户端程序
1. 使用javax.xml.ws.WebServiceRef注释可以声明一个Web Service的参考。@WebServiceRef注释使用wsdlLocation元素指定一个已经部署的Service的wsdl的URI
@WebServiceRef(wsdlLocation=http://localhost:8080/helloservice/hello?wsdl)
2. 找回Service的代理,看作一个port,这是通过调用Service的一个函数getHelloPort实现的
Hello port = service.getHelloPort();
Port实现了被service定义的SEI
3. 调用port的sayHello方法,并传入一个参数name。
String response = port.sayHello(name);
类的实现如下
- import helloservice.endpoint.Hello;
- public class HelloClient {
- @WebServiceRef(wsdlLocation = "http://localhost:8080/helloservice/hello?wsdl")
- static HelloService service;
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- try {
- HelloClient client = new HelloClient();
- client.doTest(args);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- public void doTest(String[] args) {
- try { // Call Web Service Operation
- System.out.println(
- "Retrieving the port from the following service: "
- + service);
- Hello port = service.getHelloPort();
- System.out.println("Invoking the sayHello operation on the port.");
- String name;
- if (args.length > 0) {
- name = args[0];
- } else {
- name = "No Name";
- }
- String response = port.sayHello(name);
- System.out.println(response);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
package simpleclient; import javax.xml.ws.WebServiceRef; import helloservice.endpoint.HelloService; import helloservice.endpoint.Hello; public class HelloClient { @WebServiceRef(wsdlLocation = "http://localhost:8080/helloservice/hello?wsdl") static HelloService service; /** * @param args the command line arguments */ public static void main(String[] args) { try { HelloClient client = new HelloClient(); client.doTest(args); } catch (Exception ex) { ex.printStackTrace(); } } public void doTest(String[] args) { try { // Call Web Service Operation System.out.println( "Retrieving the port from the following service: " + service); Hello port = service.getHelloPort(); System.out.println("Invoking the sayHello operation on the port."); String name; if (args.length > 0) { name = args[0]; } else { name = "No Name"; } String response = port.sayHello(name); System.out.println(response); } catch (Exception ex) { ex.printStackTrace(); } } }
发表评论
-
maven 在Mac OS下运行的问题总结
2014-05-16 17:24 818在maven下生成基本的项目结构。 生成eclipse项 ... -
【zz】 java函数参数类型后添加三点的用法
2012-07-02 09:48 1042今天看到一个没见过的函数参数列表test(int... a), ... -
【zz】Java编码的理解和Java加载器的理解
2012-06-08 15:59 745一,我对java中编码的理解1. 编码的产生 对电脑而言 ... -
类加载器入门级应用
2012-06-08 15:17 9201、类加载器负责加载 Ja ... -
ClassLoader详解
2012-06-08 14:23 1238Point One 将J2EE应用程序移植到W ... -
Java静态代理与动态代理
2012-05-29 10:32 934JAVA的静态代理与动态代 ... -
JDK的动态代理深入解析(Proxy,InvocationHandler)(转)
2012-05-29 10:31 5178调用处理器InvocationHandle ... -
zz 动态反射实现AOP的简单原理
2012-05-28 17:46 892其实AOP的意思就是面向切面编程. OO注重的是我们 ... -
理解Java枚举在单例模式的应用
2012-06-05 15:50 12685.3.9 单例和枚举 按照《高效Java 第二版》中的说 ... -
Java 枚举的介绍
2012-05-23 16:50 0一、使用简单程序完成枚举的功能 例:使用简单类完成枚举操作 ... -
枚举类型的用法
2012-06-05 15:50 1424DK1.5引入了新的类型——枚举。在 Java 中它虽然算 ... -
单例模式的七种写法 (包括1.5新特性)
2012-05-23 16:18 0第一种(懒汉,线程不安全): <!--<br / ... -
重写hashCode方法的意义
2012-05-23 16:01 1636Java中的很多对象都override了equ ... -
JDK Log的设计思想
2012-05-23 14:39 1304最近在看《Agile Java》,看到日志一节,收获颇多,所以 ... -
[zz] Synchronized和Static Synchronized区别
2012-05-23 14:07 775通过分析这两个用法的分析,我们可以理解java中锁的概念。一 ... -
双精度、单精度的有效位数
2012-05-22 17:25 5093浮点数7位有效数字。(应该是单精度数) 双精度数16位有效 ... -
DecimalFormat 使用方法
2012-05-22 16:44 1019我们经常要将数字进行格式化,比如取2位小数,这是最常见的。Ja ... -
Java Applet 无法运行的一个问题
2012-04-28 15:09 2526当你用JDK1.6开发出的新功能,在JDK1.6上re ... -
JDK1.5之中的Map相关的类
2012-04-26 10:14 1854java5的java.util包提供了大量集合类。其中最常用的 ... -
设计模式应用场景总结
2012-04-11 16:47 1259在J2EE的开发和测试中,其实不知不觉已经使用了许多设计模式。 ...
相关推荐
2. **JAX-WS**(Java API for XML Web Services)是Java平台上的SOAP(Simple Object Access Protocol)Web服务标准,主要用于创建面向服务的架构(SOA)。JAX-WS提供了处理XML消息、WSDL(Web服务描述语言)和UDDI...
Java API for XML Web Services(JAX-WS)是Java平台上用于构建和消费Web服务的标准API。它简化了创建和使用Web服务的过程,使得开发者能够通过SOAP消息与远程服务进行交互。JAX-WS允许开发者将服务接口直接映射到...
JAX-WS允许开发者以面向对象的方式构建Web服务,简化了Web服务开发过程,使得Java程序员可以更加便捷地实现服务接口和服务实现。 在给定的压缩包文件"jax-ws api jar包"中,包含的是JAX-WS 2.2.1版本的API库,即`...
该技术提供了全面的支持,使得开发者能够在Java环境中轻松构建Web服务以及Web服务客户端。JAX-WS 2.0版本进一步提升了开发效率,增强了标准化程度,从而让Web服务更加易于开发和部署。 #### 使用 JAX-WS 的优势 - ...
Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。它简化了Web服务的开发,使得Java开发者能够更方便地创建、调用和部署SOAP(Simple Object Access Protocol)服务。在这个...
2. **webservices-extra.jar** - 此文件可能包含JAX-WS的一些扩展或额外功能,如WS-I(Web Services Interoperability)支持,或者对特定Web服务协议的实现,例如WS-Security(Web Services Security)或其他厂商...
通过提供强大的类型安全模型和与Java SE及Java EE平台的紧密集成,JAX-WS使得构建高效、可维护的Web服务成为可能。 2. **基本组件** - **服务端点接口(SEI)**: 定义了Web服务的操作,这些操作对应于SOAP消息中的...
标题中的“一个包含jax-ws和jax-rs的例子(含服务端和客户端)”是指这是一个示例项目,它演示了如何使用Java API for XML Web Services (JAX-WS)和Java API for RESTful Web Services (JAX-RS)来创建和消费Web服务。...
**正文** JAX-WS(Java API for XML Web Services...总之,JAX-WS 2.0 API是Java平台开发SOAP Web服务的重要工具,通过其提供的丰富特性和简洁的编程模型,简化了Web服务的开发和使用,促进了分布式系统的构建和协作。
JAX-WS使得开发人员能够通过简单的接口定义和注解来构建Web服务,从而简化了Web服务的开发过程。与早期的Java API for XML Processing (JAX-RPC)相比,JAX-WS更符合面向对象的设计原则,更易于使用。 在本示例中,...
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(Java API for XML Web Services)的开发示例,其中包含了JAX-WS 2.2.1版本的相关组件和库文件。这个压缩包是针对Java开发者设计的,用于帮助他们理解...
《Java 7 JAX-WS Web Services》是一本专为希望利用Java 7中的JAX-WS技术构建Web服务的开发者编写的实用指南。本书由Packt Publishing出版,并由资深Java咨询专家Deepak Vohra撰写。该书深入浅出地介绍了如何在...
Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更方便地实现基于SOAP...
**JAX-WS规范详解** Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于创建Web...通过理解其核心概念、工作流程以及与WSDL、JAXB的关系,开发者可以有效地利用JAX-WS构建高效、可靠的分布式系统。
Java API for XML Web Services(jax-ws)是Java平台标准版(Java SE)和企业版(Java EE)的一部分,它为开发者提供了一种创建和消费Web服务的标准方式。jax-ws允许开发人员通过简单的编程模型来实现基于SOAP的Web...
JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式...
JAX-WS是Java平台上的Web服务规范,它使得开发者能够利用Java语言的强类型系统来构建Web服务,同时提供了客户端和服务器端的API。 **JAX-WS核心组件:** 1. **SOAP(Simple Object Access Protocol):** 是Web服务...
Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准,用于构建和部署Web服务。JAX-WS RI(Reference Implementation)是这个规范的官方参考实现,它提供了开发、测试和运行基于SOAP(Simple Object ...
**描述分析:** 描述提到“tomcat+webservice实现简单的web服务远程调用接口,所需的jar”,这暗示了在Apache Tomcat服务器上,我们将会使用JAX-WS来构建一个可以通过网络调用的Web服务接口。"所需的jar"是指为了...