blog迁移至:
http://www.micmiu.com
从JDK6.0开始,Java引入了对Web Service的支持。
我们只需要简单的使用Java的Annotation标签即可将标准的Java方法发布成Web Service。
本文注意讲述下本人在实际运用中因为SOAPBinding.Style不同,在生成webwervice时的一些差异。
SOAPBinding.Style:
PRC、
DOCUMENT JDK6 中默认的是DOCUMENT
下面通过具体的例子详细讲述JDK6 webservice的应用和差异。
1.DOCUMENT
Java类:MessageJws.java 特别注意下
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
/**
* JDK6 webservice
* @author Michael sun
*/
@WebService(name = "messageJws", targetNamespace = "http://www.michael.com/messagejws")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class MessageJws {
/**
* description WSDL with default
* @param userName
* @return String
*/
@WebMethod
public String sayLove(@WebParam(name = "userName")
String userName) {
return userName + " I love you .";
}
/**
* description WSDL myself
* @param girlName girlName
* @param boyName boyName
* @return String
*/
@WebMethod(action = "sayWelcome", operationName = "sayWelcome", exclude = false)
@WebResult(name = "returnWelcomeMessage")
public String sayWelcome(@WebParam(name = "girlName")
String girlName, @WebParam(name = "boyName")
String boyName) {
return girlName + " ," + boyName + " welcome to JDK6 webservice.";
}
}
PS:如果发布webservice的java类的方法中有异常声明时,是不能直接发布成webservice的,
需要用wsgen命令生成相应的异常处理的类。
wsgen 命令 可以为我们生成wsdl 和异常处理的类(本例没有声明异常处理)
本例的class目录结构如下:calsses\com\michael\MessageJws.class
在执行下面的命令之前需要新建文件夹
classes\wsdl\,用来存放生成wsdl文件
如果创建文件夹
classes\bin\、
classes\src\:...\classes>执行下面的命令:
wsgen -cp . -r ./wsdl -s ./src -d ./bin -wsdl com.michael.MessageJws
如果不创建上面的src、bin文件夹则可以: ...\classes>执行下面的命令:
wsgen -cp . -r ./wsdl -s ./ -d ./ -wsdl com.michael.MessageJws
这时在 calsses\com\michael\
下看到生成了新的文件夹jaxws,jaxws目录下的文件如下:
同时在刚才新建的 classes\wsdl\ 下生成了
两个wsdl相关文件:
MessageJwsService.wsdl 和 MessageJwsService_schema1.xsd详细见附见wsdl文件
wsimpot 命令 可以很方便的用来构建Web Service的客户端。
在执行下面的命令之前需要在classer\下
新建文件夹bin和src
...\calasses->执行下面的命令:
wsimport -s ./src -d ./bin -p com.michael.messageclient ./wsdl/MessageJwsService.wsdl
这时可以在
calsses\src\com\michael\messageclient\ 路径下看到:
到此 客户端已经生成好了。
2.RPC
如果把MessageJws.java 的改为
:@SOAPBinding(style = SOAPBinding.Style.RPC)
执行wsgen 命令后,不同于上面DOCUMNET的:
- 在 calsses\com\michael\ 下不会生成目录jaxws以及jaxws下的相关类。
- 在 classes\wsdl\ 下只生成了一个文件:MessageJwsService.wsdl
详细见附见wsdl文件
执行wsimport 命令后在
calsses\src\com\michael\messageclient\ 路径下看到:
和上面DOCUMENT生成客户端相比较明显不同。
PS: 本文中用到的 wsgen与wsimport命令说明
wsgen
wsgen是在JDK的bin目录下的一个exe文件(Windows版),该命令的主要功能是用来生成合适的JAX-WS。它读取Web Service的终端类文件,同时生成所有用于发布Web Service所依赖的源代码文件和经过编译过的二进制类文件。这里要特别说明的是,通常在Web Service Bean中用到的异常类会另外生成一个描述Bean,如果Web Service Bean中的方法有申明抛出异常,这一步是必需的,否则服务器无法绑定该对像。此外,wsgen还能辅助生成WSDL和相关的xsd文件。wsgen从资源文件生成一个完整的操作列表并验证web service是否合法,可以完整发布。
命令参数说明:
-cp 定义classpath
-r 生成 bean的wsdl文件的存放目录
-s 生成发布Web Service的源代码文件的存放目录(如果方法有抛出异常,则会生成该异常的描述类源文件)
-d 生成发布Web Service的编译过的二进制类文件的存放目录(该异常的描述类的class文件)
例如:
wsgen -cp ./bin -r ./wsdl -s ./src -d ./bin -wsdl com.michael.MessageJws
wsimport
wsimport也是在JDK的bin目录下的一个exe文件(Windows版),主要功能是根据服务端发布的wsdl文件生成客户端存根及框架,负责与Web Service 服务器通信,并在将其封装成实例,客户端可以直接使用,就像使用本地实例一样。对Java而言,wsimport帮助程序员生存调用web service所需要的客户端类文件.java和.class。要提醒指出的是,wsimport可以用于非Java的服务器端,如:服务器端也许是C#编写的web service,通过wsimport则生成Java的客户端实现。
命令参数说明:
-d 生成客户端执行类的class文件的存放目录
-s 生成客户端执行类的源文件的存放目录
-p 定义生成类的包名
例如:
wsimport -d ./bin -s ./src -p com.michael.messageclient http://localhost:8088/messagejws?wsdl
wsimport -d ./bin -s ./src -p com.michael.messageclient ./wsdl/MessageJwsService.wsdl
- 大小: 15 KB
- 大小: 15.7 KB
- 大小: 6.8 KB
分享到:
相关推荐
bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-...
Java 6 u191 linux x64版本,亲测可用。 解压后使用方法:(不执行下面两步,运行java -version会报下面的错误,解压命令:tar xvzf jdk1.6.0_191.linux.x64.tar.gz) # Error occurred during initialization of VM ...
jdk1.8.0_121.tar.gz
bcprov-jdk15to18-1.72.jar
jdk1.8.0_181.tar.gz
bcprov-jdk15to18-165.jar
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具. JDK是学好Java的第一步。不管是你要学习java...
JDK安装包。在XP下开发。不依赖工具。版本jdk_8.0.1310.11_64
JDK全称Java SE Development kit(JDK),即java标准版开发包,是Oracle提供的一套用于开发java应用程序的开发包,它提供编译,运行java程序所需要的各种工具和资源,包括java编译器,java运行时环境,以及常用的java...
JDK1.6_linux_免安装版,解压到相应的路径下,配置环境变量即可使用.用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。其中包括了Java编译器、JVM、大量的Java工具以及Java基础API里面是Java类库和...
java学习笔记JDK6课件和课本代码.rarjava学习笔记JDK6课件和课本代码.rarjava学习笔记JDK6课件和课本代码.rarjava学习笔记JDK6课件和课本代码.rarjava学习笔记JDK6课件和课本代码.rar
DK是Java语言的软件开发工具包,主要用于移动设备,嵌入设备的应用程序,JDK(TM)7 32位是专为使用32位操作系统的朋友准备的。JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础的类库,不管是做Java开发...
加密、解密工具包
jdk1.8.0_201.jdk.zip jdk1.8.0_201.jdk.zip jdk1.8.0_201.jdk.zip jdk1.8.0_201.jdk.zip jdk1.8.0_201.jdk.zip
linux jdk1.8_131,自己在部署项目的时候用到的,现在发出来让大家也可以下载,也算自己做个备份!
在以前的jdk版本中,只要安装jdk文件就会在本地自动生成jdk和jre两个文件,但是在新的jdk版本中没有自动生成jre文件,也没有tools.jar包。没办法就下载放进去了,不知道有没有其他的办法解决这个问题。
用于linux系统上的jdk安装包。需要通过百度云网盘下载,大小为:136.5M