详见 http://hi.baidu.com/xiaoduo170/item/0706735065d914dcd48bac5b
http://blog.csdn.net/alex197963/article/details/5319327
JSR-181的元数据清单
下面介绍JSR-181里面各个元数据的相关参数及用途
Annotation Retention Target Description
WebService Runtime Type
标注要暴露为Web Services的类或接口
WebParam Runtime Parameter 自定义服务方法参数到WSDL的映射
WebResult Runtime Method 自定义服务方法返回值到WSDL的映射
WebMethod Runtime Method 自定义单个服务方法到WSDL的映射
Oneway Runtime Method 必须与@WebMethod连用,表明被标注方法只有输入没有输出,这就要求被标注方法不能有返回值,也不能声明checked exception
HandlerChain Runtime Type,Method,Field 将Web服务与外部Handler chain关联起来
SOAPBinding Runtime Type,Method 自定义SOAPBinding
JSR-181元数据使用示例
package WebServices; import java.io.File; import java.io.IOException; import javax.jws.Oneway; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.xml.ws.Endpoint; /** * @author chinajash */ @WebService(targetNamespace="http://blog.csdn.net/chinajash",serviceName="HelloService") public class WSProvider { @WebResult(name="Greetings")//自定义该方法返回值在WSDL中相关的描述 @WebMethod public String sayHi(@WebParam(name="MyName") String name){ return "Hi,"+name; //@WebParam是自定义参数name在WSDL中相关的描述 } @Oneway //表明该服务方法是单向的,既没有返回值,也不应该声明检查异常 @WebMethod(action="printSystemTime",operationName="printSystemTime")//自定义该方法在WSDL中相关的描述 public void printTime(){ System.out.println(System.currentTimeMillis()); } public static void main(String[] args) { Thread wsPublisher = new Thread(new WSPublisher()); wsPublisher.start(); } private static class WSPublisher implements Runnable{ public void run() { //发布WSProvider到http://localhost:8888/chinajash/WSProvider这个地址,之前必须调用wsgen命令 //生成服务类WSProvider的支持类,命令如下: //wsgen -cp . WebServices.WSProvider Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider()); } } }
如果想看到Web Services Engine生成的WSDL文件是否遵守上面的元数据, 我们没有必要将上面的WSProvider部署到支持JSR-181的应用服务器或Servlet形式的Web Services Engine,现在JDK6已经提供了一个很简单的机制可以用来测试和发布Web Services,下面讲讲如何在JDK6环境下发布Web Services和查看生成的WSDL
1.将/bin加入path环境变量
2.在命令行下切换当前项目目录下,运行下面命令
wsgen -cp .\WebRoot\WEB-INF\classes -s .\src WebServices.WSProvider
在这个例子中会生成以下3个类的源代码文件及class文件
SayHi
SayHiResponse
PrintTime
3.执行如下代码发布WSProvider到http://localhost:8888/chinajash/WSProvider,在这里可以执行WSProvider类的main方法就可以
Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider());
4.在浏览器输入http://localhost:8888/chinajash/WSProvider?wsdl就可以看到生成的WSDL文件
切换到src目录下,用wsimport为服务消费者(也就是服务的客户端)生成必要的帮助类,命令如下:
wsimport -p WebServices.client -Xnocompile http://localhost:8888/chinajash/WSProvider?wsdl
这会在<当前目录>\WebServices\client\ 下生成客户端的帮助类,在这个例子中会生成7个类
HelloService.java
ObjectFactory.java
package-info.java
PrintSystemTime.java
SayHi.java
SayHiResponse.java
WSProvider.java
在客户端:
HelloService hs = new HelloService();
WSProvider ws = hs.getWSProviderPort();
System.out.println(ws.sayHi("chinajash"));
ws.printSystemTime();
调用上述代码后客户端控制台输出
hi,chinajash
服务端控制台输出服务器当前系统时间
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 org.jsoso.jws.server.Example
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 定义生成类的包名
- -keep 继续生成文件,会同时生成class、java文件
- -Xnocompile 不编译生成的java文件,即不会生成class文件
-
命令范例: wsimport -d ./bin -s ./src -p org.jsoso.jws.client.ref -Xnocompile http://localhost:8080/hello?wsdl
相关推荐
NULL 博文链接:https://flame-zhou.iteye.com/blog/2206232
wsCaller是使用Java语言编写的Web Service通用客户端和测试工具。wsCaller可执行程序的发布方式为一个wsCaller.jar包,不包含Java运行环境。你可以把wsCaller.jar复制到任何安装了Java运行环境(要求安装JRE/JDK ...
本文档实例Dome基于的技术是:JSF + Jboss-seam-2.1.1.GA. + Jboss 4.2.3 GA + EJB 3.0 + Jboss ESB + My-SQL-5.0.8 + JDK 1.6
文档包括JDK开发webservice、web项目发布、使用Axis2框架实现webservice等内容
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》特别介绍了Struts 2对AjAX的支持,还重点剖析了SSH框架的整合开发,并给出了两个综合案例来展示整合SSH框架开发Web应用。 和已经出版的同类图书...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》特别介绍了Struts 2对AjAX的支持,还重点剖析了SSH框架的整合开发,并给出了两个综合案例来展示整合SSH框架开发Web应用。 和已经出版的同类图书...
1.采用cxf集成Spring实现webservice接口的发布。 2.(调用一)用eclipse根据wsdl连接自动生成java代码实现接口的调用。 3.(调用二)用axis2实现接口调用。...4.开发环境:eclipse+jdk1.8+tomcat8.5
从jdk环境变量的配置、服务器的下载与安装及service文件的配置、数据库的下载与安装、web开发环境的搭建与Tomcat在Myeclipse上的部署
习惯了MyEclipse的你是否曾想过基于Eclipse进行Dynamic Web Project项目开发呢?网上资料颇多,但是实践起来却发现总有这样那样的问题,设计Lucene搜索引擎项目的一个需要,重新搭建了一次环境,感触颇多,先总结...
Dubbo简易监控中心发布包,基于GitHub上的dubbo-master版本构建,源码版本为2.5.4开发版。...(注意里面的WEB-INF/dubbo.properties中zookeeper的地址配置正确并且zookeeper服务正在运行) 默认用户 root root
在开发基于SSM框架的众筹网站时,首先需要搭建好相应的开发环境,包括安装和配置JDK、开发工具(如IDEA或Eclipse)、数据库(如MySql)等。然后,按照SSM框架的规范进行项目结构的划分和搭建,通常包括Web层、...
14.2.2 开发Web Service服务器端 247 14.2.3 发布和运行Web Service 249 14.2.4 使用Web Services Explorer访问Web Service 250 14.2.5 使用Java客户端访问Web Service 251 14.3 向现有Web项目加入Web Service功能 ...
2.1.1 JDK的安装与配置 6 2.1.2 Grails的安装 7 2.2 创建Grails工程 8 2.3 Grails的MVC架构 11 2.4 Scaffold应用程序 14 2.5 开发工具的使用 17 2.6 本章小结 19 第3章 Groovy VS Java 20 3.1 Groovy的基本类型与...
第14章 Android综合案例三——基于Android的豆瓣网(Web2.0)移动客户端开发 14.1 关于豆瓣网和豆瓣网API 14.1.1 豆瓣网介绍 14.1.2 豆瓣网API介绍 14.1.3 豆瓣网API认证 14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网API...
第14章 android综合案例三——基于android的豆瓣网(web 2.0)移动客户端开发 260 14.1 关于豆瓣网和豆瓣网api 260 14.1.1 豆瓣网介绍 260 14.1.2 豆瓣网api介绍 261 14.1.3 豆瓣网api认证 261 14.1.4...
第14章 Android综合案例三——基于Android的豆瓣网(Web2.0)移动客户端开发 14.1 关于豆瓣网和豆瓣网API 14.1.1 豆瓣网介绍 14.1.2 豆瓣网API介绍 14.1.3 豆瓣网API认证 14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网API...
1、工具:jdk1.7.0_80(64)+tomcat7.0.68+myeclipse10.6+mysql-5.5.48-win32 2、 开发环境安装配置、Maven项目创建(参考:http://www.cnblogs.com/cac2020/p/5222658.html) 3、技术框架:Spring 4.1.4.RELEASE、...
1.2 ISAG与WEB SERVICE技术 6 1.3开发环境搭建 7 1.3.1 安装JDK 7 1.3.2下载安装ECLIPSE 7 1.3.3 安装WTP模块 8 1.3.4 安装Tomcat 9 1.3.5 ISAG接口相关通用参数及说明 10 2. SMS 13 2.1短信接口开发环境搭建 13 2.2...
安装Java开发工具包(JDK)。 安装并配置Maven或Gradle作为项目构建工具。 安装集成开发环境(IDE),如IntelliJ IDEA或Eclipse,并配置Spring Boot插件。 创建新项目: 在IDE中创建一个新的Spring Boot项目。这...