一、简介
与 WebServices 相关的 J2EE 技术称为 JWS(Java WebServices),其中含有 JAX-WS、JAX-RS、JAXB、JAXR、SAAJ、StAX 等技术。
支持 SOAP 的是 JAX-WS,即 JSR 224,
JWS 支持 REST 的是 JAX-RS,即 JSR 311,
下面是本人经过学习webservices而自作的一个说明文档,此文档仅仅适用于初学者,文档中将webservices的创建过程、配置过程、调用过程进行了讲述,本webservices的创建基于JAX-WS,对于xFire现在已基本放弃,不建议大家使用XFire,希望此文档可以帮到正在走弯路的童鞋,下面是对几种技术的简介:
1、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务本身的角度来看JWS服务是没有语言界限的。但是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。
2、Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制作和发布WebService,而且可以生成Java和其他语言版WebService客户端和服务端代码。这是它的优势所在。但是,这也不可避免的导致了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。但是如果你要开发Java之外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。
3、XFire是一个高性能的WebService框架,在Java6之前,它的知名度甚至超过了Apache的Axis2,XFire的优点是开发方便,与现有的Web整合很好,可以融为一体,并且开发也很方便。但是对Java之外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,原因是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经不再被看好,渐渐的都败落了。
4、CXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。CXF来自于XFire项目,经过改造后形成的,就像目前的Struts2来自WebWork一样。可以看出XFire的命运会和WebWork的命运一样,最终会淡出人们的视线。CXF不但是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,当然他不是最好的,它仅仅实现了SOA架构的一部分。
基于以上的认识,我们可以得知,虽然有了Java6,但是我们还可以选择Axis2、XFire、CXF等。我们不能指望有了Java6 JWS,就能异想天开去实施SOA。如果要与别的语言交互,也许我们还有赖于Axis2等等,当然这不是唯一选择,仅仅是一种可供选择的方案。 还有,目前很多企业的应用还是基于Java5的,而Java5的项目不会瞬间都升级到Java6,如果要在老项目上做扩展,我们还有赖于其他开源的WS引擎。
二、myclipse7.5创建服务器端webservice
1、创建java的web项目
2、创建外放到webservice的class类,如“Test”
3、类和方法定好之后,在src上在键->other->myeclipse->web services 下选中web service,然后next,创建webservices选择
7、工具会自动生成所必须的文件:如XXDelegate.java的代理类,sun-jaxws.xml配置文件以及web.xml的启动配置文件。
8、最后进行发布项目,启动服务。webservice成功
三、创建webservcie的客户端
1、创建web项目,(和上面的第一步一样)
2、创建web client项目:在src上右键——other——MyEclipse——Web Services下选中Web Service,然后Next,创建webservices选择
选择“jax-ws”点击next
3、输入服务器的wsdl路径,选择输出的包路径,点击下一步:
6、校验没有问题,选中jax-ws的Jar包,点击finish
7、点击finish系统会自动所有需要调用服务器端必须的文件
8、创建测试类,对服务器的功能进行调用:
package cn.topcheer.webservice.test; import cn.topcheer.webservice.client.TestService; public class Test { public static void main(String[] args) { TestService ts = new TestService(); String aa = ts.getTestPort().getString(); System.out.println(aa); } }
四、问题:
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3915) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
解决方案:遇到这个问题肯定是因为包的问题,此时解决方法有两种:
1. 下载JAX-WS架包,放置到tomcat的lib下面http://jax-ws.java.net/.;
2. 另外一种使用myeclipse自带的tomcat;
相关推荐
它定义了如何通过Java编程模型来创建、发布和调用Web服务,比如使用@WebService注解来标识一个Java类为Web服务接口,以及相关的处理类和服务端点接口。 2. "jakarta.jws-api-2.1.0-javadoc.jar":这个文件包含了...
Java Web Service(JWS)是一种基于Java平台的Web服务技术,它允许开发人员创建和部署标准的、跨平台的Web服务。在这个场景中,"jws-webservice 的发布"指的是利用JWS技术来发布一个Web服务,使得其他应用程序可以...
例如,通过`@WebService`注解一个Java类,就可以将其转换为一个可发布的Web服务。 2. **JAXB**: Java Architecture for XML Binding (JAXB) 提供了将Java对象与XML文档之间进行自动转换的功能。在JWS中,JAXB用于...
Java Web Service (JWS) 是Java平台上的一个技术,它允许开发者创建和部署Web服务。在本场景中,"JWS jar包"指的是用于支持JWS开发和运行的Java类库。`edu.mit.jwi` 和 `edu.sussex.nlp.jws.beta.11` 是两个特定的...
- **定义服务接口**:首先,我们需要定义一个Java接口,用`@WebService`注解标记,接口中的方法就是Web服务的端点。 - **实现服务接口**:创建一个实现了服务接口的类,这个类通常包含实际的服务逻辑。 - **发布...
在本场景中,"开发基于JWS的webservice并通过jun-jaxws发布所需的jar包"指的是利用Java API for XML Web Services (JAX-WS) 的一个实现——Sun JAX-WS(也称为Metro)来创建、部署和运行Web服务。Sun JAX-WS是Oracle...
本教程将讲解如何使用Spring Boot来搭建一个Web Service服务端,并介绍如何利用Java客户端进行调用。 ### 一、Spring Boot与Web Service Spring Boot简化了Java应用的启动和配置,通过“约定优于配置”的原则,...
【标题】"my-webservice:my-webservice 是一个基于Java的网络服务项目,它利用了javax.jws包来实现Web服务的功能。这个服务提供了一个URL,使得用户可以通过网络调用其功能。" 【描述】"my-webservice项目是构建在...
JWS(Java Web Service)批注是用于描述Java Web服务的重要工具。通过使用特定的批注,开发人员可以在不依赖额外配置文件的情况下定义Web服务的各种属性,使得服务的定义更加简洁、直观。本文将详细介绍JWS批注的...
本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...
### JAVA的WebService支持-CXF #### 一、概述与背景 WebService作为一种标准的服务技术,它允许不同系统之间通过网络进行通信。随着企业级应用对于跨系统、跨平台交互的需求日益增长,WebService因其开放性及标准...
### Java开发WebService实例详解 在IT领域,尤其是企业级应用开发中,WebService作为一种标准化的、跨平台的服务交互方式,被广泛应用于系统间的数据交换与服务调用。本文将基于给定的“Java开发WebService实例”...
Java WebService 是一种基于标准协议(如SOAP,WSDL)的跨平台、跨语言的通信机制,用于构建可互操作的分布式系统。本篇将详细介绍Java WebService的入门实例,包括其工作原理以及如何创建和测试一个简单的...
【标题】"jws与spring发布WebService"涉及的是在Java Web Service(JWS)和Spring框架结合下,如何创建和部署Web服务。Web服务是一种基于网络的、平台无关的交互方式,它允许不同系统间的应用进行数据交换。JWS是...
JAX-WS提供了创建和消费SOAP WebService的API,包括`javax.jws.WebService`注解用于声明服务端点,以及`javax.xml.ws.Service`类用于客户端调用。本工具类可能利用了JAX-WS的一些核心功能来简化服务调用。 4. **...
这里,我们使用了`@javax.jws.WebService`注解来定义服务的相关属性,如目标命名空间、服务名、端口名以及WSDL(Web Service Description Language)位置。创建的`HelloJaxwsDelegate`类就是服务端的代理类,它会...