- 浏览: 404643 次
- 性别:
- 来自: 哈尔滨
最新评论
-
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 11287破解 CKFinder是收费的,可是我们都比较 ... -
CKFinder2.x 入门
2011-07-08 16:04 6384CKFinder是一款强大的基于浏览器的ajax文件管 ... -
jxl 操作 Excel
2011-06-09 12:06 9686java 操作 Excel 最常用的就是JXL(jav ... -
CKEditor 3.6 入门二
2011-05-23 18:11 5482配置CKEditor ... -
CKEditor 3.6 入门
2011-05-20 11:28 8267有多种方法可以将CKEditor集成到你的页面中,下面是 ... -
JAVA6开发WebService (五)—— JAXB
2011-01-25 16:55 6941JAXB(Java API for XML Bindi ... -
多线程断点续传
2011-01-12 12:20 3739以前看过一个前辈写的断点续传的文章,记得当时没看懂,就 ... -
JAVA6开发WebService (四)——SAAJ调用WebService
2010-11-13 14:32 8542前面写了个JAX-WS的小例子,看到用JAVA6开发W ... -
JAVA6开发WebService (三)——几个概念
2010-11-11 17:00 18634要了解WebService,光能写 ... -
JAVA6开发WebService (二)——JAX-WS例子
2010-11-10 17:13 19735上一篇写了个最简单的小例子,只是为了说明JAVA6开发 ... -
InputStream、OutputStream、String的相互转换
2010-11-09 16:37 473971、字符串转inputStream String ... -
dom4j解析xml
2010-08-20 10:52 7279dom4j和jdom都是非常优秀的xml解析工具,但现 ... -
正则表达式
2010-05-17 16:39 1774先看一个用正则表达式校验Email的js方法 func ... -
Struts 1 和 Struts 2 的线程安全
2010-03-23 16:58 5697昨天人问我Struts 2是怎么保证全局变量的线程安全 ... -
oracle 字符串函数
2010-02-22 10:59 25941.LOWER 返回字符串的小写形式;select lower ... -
JAVA 集合类
2010-01-06 16:41 1283Collection├List│├LinkedLi ... -
JAVA 线程学习笔记--同步
2009-12-30 16:37 1530为了确保可以在线程之间以受控方式共享数据,Java 语言提供了 ... -
JAVA 线程学习笔记
2009-12-30 16:26 2895创建线程有两种方法。 ... -
JAVA调用系统命令或可执行程序
2009-09-03 15:33 69639通过 java.lang.Runtime 类可以方便的 ... -
FTP客户端(利用sun.net.ftp.FtpClient实现)
2009-07-30 15:35 25822昨天帮同事弄java上传文件到ftp服务器,用的sun ...
相关推荐
Java 6 开发 WebService
Java开发tomcat中间件的WebService实例
JAVA6开发WebService JWS示例
Java6开发WebService详细啊
java开发webservice的简单例子,简单看看
自己总结的java webService接口开发案例,希望能够帮助我需要的朋友。
开发webservice可以使用java、也可以使用c#。由于国内大多数计算机安装的是Windows系列操作系统,所以使用c#开发webservice不仅开发效率高,而且部署和维护很方便。 本文详细介绍了java如何调用c#开发的webservice。...
NULL 博文链接:https://wuhongyu.iteye.com/blog/808922
之前常常用CXF、Axis2、XFire等来开发结合Java语言来...但实际上Java6中已经支持用Java开发WebService应用了,而且很方便。这样就大大减少了项目安装部署的代价,因为选择开源的框架依赖大量第三方包,程序的尺寸倍增。
2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...
eclipse环境下,Java6上开发WebService
java开发webservice入门最全讲解demo
最近开发要做一人用java 调.net webservice的,以上是我用axis1.4写的一个小例子,希望可以借鉴
java开发过程中,很多地方都会遇到数据传递,远程获取数据问题,我这个简单的webservice接口发布可以在java开发过程中,很多地方都会遇到数据传递,远程获取数据问题,我这个简单的webservice接口发布可以在
自己写的调试可以运行的Java6自带的WebService功能小例子。 有完整的Jar包和项目代码。 放心运行使用。
java开发webservice
java实现webservice实例.
文档描述了通过jdk6开发webservice的例子 生成客户端代码的方法
myeclipse开发Java WebService.zip
JAVA自带实现webservice开发、启动、部署、调用以及给webservice如何设置权限,主要用到javax.jws