`
宇宙浪子
  • 浏览: 46585 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDK6 开发 Web Service

    博客分类:
  • java
阅读更多

详见  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

 

 

分享到:
评论

相关推荐

    jdk5 下 CXF 开发 WEB Service client 所需jar 包

    NULL 博文链接:https://flame-zhou.iteye.com/blog/2206232

    Web Service通用客户端和测试工具

    wsCaller是使用Java语言编写的Web Service通用客户端和测试工具。wsCaller可执行程序的发布方式为一个wsCaller.jar包,不包含Java运行环境。你可以把wsCaller.jar复制到任何安装了Java运行环境(要求安装JRE/JDK ...

    Web Service简介及开发实例

    本文档实例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

    Web Service远程调用技术

    文档包括JDK开发webservice、web项目发布、使用Axis2框架实现webservice等内容

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》特别介绍了Struts 2对AjAX的支持,还重点剖析了SSH框架的整合开发,并给出了两个综合案例来展示整合SSH框架开发Web应用。 和已经出版的同类图书...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》特别介绍了Struts 2对AjAX的支持,还重点剖析了SSH框架的整合开发,并给出了两个综合案例来展示整合SSH框架开发Web应用。 和已经出版的同类图书...

    Web Service 接口的发布与调用

    1.采用cxf集成Spring实现webservice接口的发布。 2.(调用一)用eclipse根据wsdl连接自动生成java代码实现接口的调用。 3.(调用二)用axis2实现接口调用。...4.开发环境:eclipse+jdk1.8+tomcat8.5

    搭建服务器、数据库、搭建web开发环境

    从jdk环境变量的配置、服务器的下载与安装及service文件的配置、数据库的下载与安装、web开发环境的搭建与Tomcat在Myeclipse上的部署

    eclipse配置tomcat开发Dynamic Web Project环境图解

    习惯了MyEclipse的你是否曾想过基于Eclipse进行Dynamic Web Project项目开发呢?网上资料颇多,但是实践起来却发现总有这样那样的问题,设计Lucene搜索引擎项目的一个需要,重新搭建了一次环境,感触颇多,先总结...

    dubbo_admin-2.54.war和dubbo_admin_2.54forJDK8

    Dubbo简易监控中心发布包,基于GitHub上的dubbo-master版本构建,源码版本为2.5.4开发版。...(注意里面的WEB-INF/dubbo.properties中zookeeper的地址配置正确并且zookeeper服务正在运行) 默认用户 root root

    基于SSM框架的众筹网开发.rar

    在开发基于SSM框架的众筹网站时,首先需要搭建好相应的开发环境,包括安装和配置JDK、开发工具(如IDEA或Eclipse)、数据库(如MySql)等。然后,按照SSM框架的规范进行项目结构的划分和搭建,通常包括Web层、...

    JAVA程序开发大全---上半部分

    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功能 ...

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    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的基本类型与...

    android开发入门与实战(下)

    第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...

    《Google Android开发入门与实战》.pdf

    第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...

    android开发入门与实战(上)

    第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...

    springMVC+Spring+Mybatis+Maven整合代码案例

    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、...

    ISAG,WAP接入最新文档

    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...

    Springboot开发.doc

    安装Java开发工具包(JDK)。 安装并配置Maven或Gradle作为项目构建工具。 安装集成开发环境(IDE),如IntelliJ IDEA或Eclipse,并配置Spring Boot插件。 创建新项目: 在IDE中创建一个新的Spring Boot项目。这...

Global site tag (gtag.js) - Google Analytics