- 浏览: 407344 次
- 性别:
- 来自: 哈尔滨
最新评论
-
springdata_springmvc:
如何在java Web项目中开发WebService接口,地址 ...
JAVA6开发WebService (二)——JAX-WS例子 -
springdata-jpa:
如何在java Web项目中开发WebService接口,地址 ...
JAVA6开发WebService (三)——几个概念 -
springmvc-freemarker:
如何在java Web项目中开发WebService接口,地址 ...
JAVA6开发WebService (一) -
yuanfen2014:
[color=red][/color] 学习了
jdom解析xml -
di1984HIT:
我很喜欢你对设计模式的理解。
JAVA设计模式学习笔记5——模版方法模式(Template Method Pattern)
WebService是SOA的一种较好的实现方式,它将应用程序的不同功能单元通过中立的契约(独立于硬件平台、操作系统和编程语言)联系起来,使得各种形式的功能单元更好的集成。
W3C对他的定义是:
A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages......"
Web service是一个软件系统,为了支持跨网络的机器之间相互操作交互而设计。它有一个机器可识别的描述格式(特别是WSDL)。不同的系统之间可以通过SOAP消息在规定的方式下相互调用。(英文不好,请指正!)
简单的说,WebService是一种独立于特定语言、特定平台,基于网络的、分布式的模块化组件。是一个能够使用xml消息通过网络来访问的Interface,这个Interface描述了一组可访问的操作。
WebService一般分为两种:
REST式WebService,基于HTTP协议;
RPC式WebService,基于SOAP协议,不过SOAP也是基于HTTP传输的。
狭义上的WebService是指第二种RPC式的WebService,也就是我们常说的那种。
JAVA中有三种WebService规范,分别是JAX-WS(JAX-RPC)、JAX-RS、JAXM&SAAJ。
这里先说JAX-WS(Java API For XML-WebService),JDK1.6 自带的版本为JAX-WS2.1,其底层支持为JAXB。早期的JAVA Web服务规范JAX-RPC(Java API ForXML-Remote Procedure Call)目前已经被JAX-WS 规范取代,JAX-WS 是JAX-RPC 的演进版本,但JAX-WS 并不完全向后兼容JAX-RPC。
废话不多说了,先来写一个最简单的例子:
服务器端:
在想要发布为WebService的类上加上注解@WebService,这个类的方法就变为WebService的方法了,再通过Endpoint的publish方法,发布这个服务,到此,一个最简单的WebService搞定。运行main方法,在浏览器里输入”http://localhost:8080/com.why.webservice.Hello?wsdl “ 会看到你的WSDL信息。
不过需要注意一 下, 有的同学如果不加@SOAPBinding(style = SOAPBinding.Style.RPC)这行代码会报错:
com.sun.xml.internal.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class com.why.webservice.jaxws.SayHello is not found. Have you run APT to generate them?
网上资料说只要将JDK升级到1.6u17就可以了,我直接升级到了1.6u22(1.6.0_22-b04),问题解决!
package com.why.webservice; import javax.jws.WebService; import javax.xml.ws.Endpoint; /** * * @author why * */ @WebService public class Hello { public String sayHello(String name) { return "Hello " + name; } public static void main(String[] args){ Endpoint.publish("http://localhost:8080/com.why.webservice.Hello", new Hello()); System.out.println("Success"); } }
客户端:
在命令行输入命令 wsimport -p [包名] -keep [发布的服务地址?wsdl] 生成客户端代码,如生成本例的客户端代码”wsimport -p com.why.client -keep http://localhost:8080/com.why.webservice.Hello?wsdl“,当然,前提是你已经配好了JAVA环境变量。控制台会显示
利用这些生成的客户端代码,就可以调用这个WebService服务了:
package com.why.client; /** * * @author why * */ public class HelloClient { /** * @param args */ public static void main(String[] args) { Hello hello = new HelloService().getHelloPort(); String s = hello.sayHello("why"); System.out.println(s); } }
执行代码,输出:Hello why
评论
命令行里如果是在D:\test>下执行wsimport -p com.why.client -keep http://localhost:8080/com.why.webservice.Hello?wsdl
生成的客户端代码就在D:\test\com\why\client下面,明白了么?就是在你执行命令所在的路径下再生成com.why.client这样的包,然后在里面生成客户端代码
还是找不到呢?HelloService在哪里呢?
http://localhost:8080/com.why.webservice.Hello?wsdl is unreachable,Failed to parse the WSDL。请问这是为什么呢?
问题已经解决,要先把服务端跑起来,然后再去命令行输入命令。直接在Hello类里面右键》》run as》》java application就可以了。
http://localhost:8080/com.why.webservice.Hello?wsdl is unreachable,Failed to parse the WSDL。请问这是为什么呢?
d.v2.runtime.JAXBContextImpl.<init>([Ljava/lang/Class;Ljava/util/Collection;Ljav
a/util/Map;Ljava/lang/String;ZLcom/sun/xml/internal/bind/v2/model/annotation/Run
timeAnnotationReader;ZZ)V
at com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BindInfo.getJAXB
Context(BindInfo.java:316)
at com.sun.tools.internal.xjc.reader.internalizer.SCDBasedBindingSet.app
ly(SCDBasedBindingSet.java:195)
at com.sun.tools.internal.xjc.ModelLoader.createXSOM(ModelLoader.java:50
2)
at com.sun.tools.internal.xjc.api.impl.s2j.SchemaCompilerImpl.bind(Schem
aCompilerImpl.java:216)
at com.sun.tools.internal.xjc.api.impl.s2j.SchemaCompilerImpl.bind(Schem
aCompilerImpl.java:69)
at com.sun.tools.internal.ws.processor.modeler.wsdl.JAXBModelBuilder.bin
d(JAXBModelBuilder.java:120)
at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildJAX
BModel(WSDLModeler.java:2173)
at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.internal
BuildModel(WSDLModeler.java:173)
at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildMod
el(WSDLModeler.java:119)
at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.jav
a:170)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:100)
at com.sun.tools.internal.ws.WsImport.main(WsImport.java:38)
E:\workspace\Webservice\src>
我的jdk 版本是 java version "1.6.0_24"
是生成的客户端代码
发表评论
-
CKFinder2.x 入门 二
2011-07-08 17:28 11404破解 CKFinder是收费的,可是我们都比较 ... -
CKFinder2.x 入门
2011-07-08 16:04 6427CKFinder是一款强大的基于浏览器的ajax文件管 ... -
jxl 操作 Excel
2011-06-09 12:06 9780java 操作 Excel 最常用的就是JXL(jav ... -
CKEditor 3.6 入门二
2011-05-23 18:11 5541配置CKEditor ... -
CKEditor 3.6 入门
2011-05-20 11:28 8343有多种方法可以将CKEditor集成到你的页面中,下面是 ... -
JAVA6开发WebService (五)—— JAXB
2011-01-25 16:55 7000JAXB(Java API for XML Bindi ... -
多线程断点续传
2011-01-12 12:20 3798以前看过一个前辈写的断点续传的文章,记得当时没看懂,就 ... -
JAVA6开发WebService (四)——SAAJ调用WebService
2010-11-13 14:32 8644前面写了个JAX-WS的小例子,看到用JAVA6开发W ... -
JAVA6开发WebService (三)——几个概念
2010-11-11 17:00 18751要了解WebService,光能写 ... -
JAVA6开发WebService (二)——JAX-WS例子
2010-11-10 17:13 19792上一篇写了个最简单的小例子,只是为了说明JAVA6开发 ... -
InputStream、OutputStream、String的相互转换
2010-11-09 16:37 474731、字符串转inputStream String ... -
dom4j解析xml
2010-08-20 10:52 7331dom4j和jdom都是非常优秀的xml解析工具,但现 ... -
正则表达式
2010-05-17 16:39 1820先看一个用正则表达式校验Email的js方法 func ... -
Struts 1 和 Struts 2 的线程安全
2010-03-23 16:58 5737昨天人问我Struts 2是怎么保证全局变量的线程安全 ... -
oracle 字符串函数
2010-02-22 10:59 26371.LOWER 返回字符串的小写形式;select lower ... -
JAVA 集合类
2010-01-06 16:41 1316Collection├List│├LinkedLi ... -
JAVA 线程学习笔记--同步
2009-12-30 16:37 1575为了确保可以在线程之间以受控方式共享数据,Java 语言提供了 ... -
JAVA 线程学习笔记
2009-12-30 16:26 2936创建线程有两种方法。 ... -
JAVA调用系统命令或可执行程序
2009-09-03 15:33 69721通过 java.lang.Runtime 类可以方便的 ... -
FTP客户端(利用sun.net.ftp.FtpClient实现)
2009-07-30 15:35 25963昨天帮同事弄java上传文件到ftp服务器,用的sun ...
相关推荐
### Java开发WebService实例详解 在IT领域,尤其是企业级应用开发中,WebService作为一种标准化的、跨平台的服务交互方式,被广泛应用于系统间的数据交换与服务调用。本文将基于给定的“Java开发WebService实例”...
【Java 6 开发 WebService】是关于使用Java 6版本进行Web服务开发的技术主题。Web服务是一种基于网络的应用程序接口,它允许不同系统之间的数据交换。在这个场景中,我们将探讨如何利用Java 6的新特性,通过注解轻松...
JAVA6 开发WebService JWS示例 WebService 概念 WebService 是一种软件系统,旨在支持跨网络的机器之间相互操作交互。它有一个机器可识别的描述格式,特别是 WSDL。不同的系统之间可以通过 SOAP 消息在规定的方式...
在Java 6中开发Web服务(WebService)是企业级应用中的常见任务,它允许不同的系统之间通过网络交换数据。本文将深入探讨Web服务的几个关键概念,帮助开发者更好地理解和使用这项技术。 首先,我们来理解什么是Web...
Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...
### Java6开发WebService入门 #### 一、背景与意义 在早期的Web服务开发中,开发者通常会使用CXF、Axis2、XFire等工具来构建基于Java的应用程序。这些工具之所以被广泛采用,主要是因为它们能够提供广泛的兼容性和...
【Java6开发WebService详解】 在Java6中,开发Web Service变得更加简单和直接,无需依赖额外的框架如CXF、Axis2或XFire。Java6引入了内置的JAX-WS(Java API for XML Web Services)支持,使得创建和发布Web ...
Java开发Web服务(Web Service)是一种常见的技术,用于在不同应用程序之间实现互操作性。Web服务基于开放标准,如XML(可扩展标记语言)、WSDL(Web服务描述语言)和SOAP(简单对象访问协议),使得服务提供者可以...
在IT行业中,Java是一种广泛应用的编程语言,而Web服务(Web Service)则是一种基于标准的、平台无关的方式,使得不同的应用...理解并熟练掌握这一技术,对于Java开发者来说,无疑会提升其在企业级应用开发中的能力。
在Java 6中,主要使用以下组件来开发WebService: 1. **Service端点接口(SEI)**:定义了服务的操作,使用`@WebService`注解标识。例如: ```java import javax.jws.WebService; @WebService public interface ...
2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...
在Java 6中创建Web服务(WebService)是一个相对简单的过程,尤其对于那些熟悉JAX-WS(Java API for XML Web Services)的开发者来说。本文将详细介绍如何利用Java 6的API来构建一个基本的SOAP(Simple Object ...
在Java 6中开发Web服务(WebService)是企业级应用中...同时,通过提供的HTML文档(Java6上开发WebService.html)和相关资源(java6WS、Java6上开发WebService_files),可以更深入地学习和实践Java 6 Web服务开发。
【Java与.NET开发WebService详解大全】 在IT领域,WebService是一种基于标准协议(如SOAP和WSDL)的跨平台、跨语言的通信机制,允许不同系统间的应用进行交互。本篇文章将详细探讨使用Java和.NET(VB.NET为例)开发...
Java定时进行WebService数据上报是一种常见的任务调度需求,用于定期向远程服务器发送数据,例如日志、统计信息或者业务数据。这个过程涉及到Java编程语言、WebService技术和时间触发机制。以下将详细讲解这些知识点...
在本篇主题“JAVA6开发WebService(四)——SAAJ调用WebService”中,我们将探讨如何使用Java API for XML Messaging (SAAJ)来与WebService进行交互。SAAJ是Java平台中用于处理SOAP消息的API,它提供了创建、解析和...
Java 调用 ODI webservice 是实现数据同步的一种常见方式。ODI(Oracle Data Integrator)是一种数据集成平台,提供了webservice接口,允许用户通过webservice调用ODI方案执行,从而实现数据的同步。 在本文档中,...
在Android开发中,Java语言是主要的编程工具,而Webservice是一种通过网络提供服务的方式,通常基于HTTP协议,使得移动应用、Web应用等可以互相交换数据。本篇将详细讲解如何在Android应用中使用Java调用Webservice...
### Java访问C#开发的Webservice详解 #### 一、引言 在现代软件开发过程中,尤其是对于大型项目而言,采用分布式系统架构已经成为一种常态。分布式应用能够将复杂的业务逻辑分解并部署到不同的服务器上,从而提高...
Axis是Apache软件基金会开发的一个开源项目,它提供了一种方便、高效的方式,使得Java应用程序能够作为客户端来消费或作为服务端来发布WebService。在这个过程中,Axis起到了一个SOAP(Simple Object Access ...