jax-ws 实现webservice

简介:

   文章中http://5148737.blog.51cto.com/5138737/1604472 中我们曾谈到,JAX-WS可以实现webservice,与axis,cxf不同的是,JAX-WS是一种规范。

  一、什么是jax-ws

     JAX-WS规范是一组XML web services的JAVA API,JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services


二、jax-ws与jax-rpc的关系

      Sun最开始的web services的实现是JAX-RPC 1.1 (JSR 101)。这个实现是基于Java的RPC,并不完全支持schema规范,同时没有对Binding和Parsing定义标准的实现。

   JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173),同时它还完全支持schema规范。


三、使用jax-ws构建web服务

  使用jax-ws实现webservice的话,需要导入jax-ws的jar包,因为使用的是jdk中的jar,需要使用wsgen与wsimport两个命令,下面一一道来:


(1)新建java类,添加注解,@WebService标志该类为一个webservice,WebMethod标志方法为webservice的方法。

1
2
3
4
5
6
7
8
9
@WebService
public  class  Hello {
     
     @WebMethod
     public  String sayhello(String name) {
         System.out.println( "hello,"  +name);
         return  "hello," +name;
     }
}


(2)javac编译该java类

javac   Hello.java


(3)生成wsdl等文件

   此处,使用wsgen生成WSDL和相关的xsd文件,

1
D:\workspace\jaxws\src>wsgen  -cp  .  com.xj.service.Hello  -wsdl

-wsdl参数代表生成webservice,缺省的话将默认不生成

- s参数代表生成的.java文件置于何处

-d 参数代表生成的编译class文件置于何处

-r 参数代表生成的.wsdl文件与.xsd文件生成在何处

-cp参数代表classpath,即Hello.class的所在路径


此时,可以看到目录中生成了wsdl与xsd文件。

(4)编写服务端并启动

1
2
3
4
5
6
7
8
public  class  test {
     public  static  void  main(String[] args) {
         String address= "http://localhost/Jaxws/HelloService" ;
         Endpoint.publish(address,  new  Hello());
         System.out.println( "启动server服务" );
     }
 
}

测试发现不需要wsgen命令,上述方式也可以启动服务端,查看服务端是否启动成功

访问,http://localhost/Jaxws/HelloService,可以看到wsdl文件


(5)编写客户端,并访问服务端

 新建客户端项目jaxws-client

 使用wsimport生成Java的客户端实现

1
D:\workspace\jaxws-client>wsimport -p com.xj.client -keep  http: //localhost/Jaxws/HelloService?wsdl

命令参数说明:

  -d:生成客户端执行类的class文件的存放目录

  -s:生成客户端执行类的源文件的存放目录

  -p:定义生成类的包名

地址为我们服务端中暴露的wsdl的地址,命令执行完后,可以看到客户端项目中生成如下文件:

wKiom1S-GlnjxxECAADwUDP55C0833.jpg


代码实现访问:

1
2
3
4
5
6
7
8
public  class  test {
     public  static  void  main(String[] args) {
         HelloService helloService =  new  HelloService();
             Hello hello = helloService.getHelloPort();
         System.out.println(hello.sayhello( "sdf" ));
         
     }
}

如上,创建webservice代理,得到port,通过port可以访问所有的方法。


下面给出jax-ws的jar包地址

 http://yun.baidu.com/share/link?shareid=573524266&uk=2836507213

 




     本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1606229,如需转载请自行联系原作者



相关文章
|
Java Maven 网络架构
简单的Jax-WS WebService实现
目录   1       定义Service 2       服务端发布Service 2.1      排除WebService中的某个方法 3       客户端访问Service 4       java2ws工具的使用 4.
974 0
|
安全 Java 网络架构
jax-ws之webservice security(安全)教程第一天
前言: 在前面的“5天学会jaxws-webservice教程”,我们讲了基本的jax-ws的使用。 Jax-ws是业界公认的标准的webservice,它已经成为了一个行业界标准,包括cxf,其实cxf也是调用的jax-ws为标准的基于spring的webservice框架。
1097 0
|
XML 安全 数据安全/隐私保护
jax-ws之webservice security(安全)教程第二天
前言: 第一天里说了如何用jax-ws去结合ssh框架。 在今天的教程中将会向大家详细讲述一个ws-security中的一个传统的”基于handler”来认证客户端传来的用户名密码的webservice. 客户端传过来一对用户名和密码,服务端进行认证。
1061 0
|
Web App开发 安全 网络性能优化
jax-ws之webservice security(安全)教程第三天
前言: 在今天的学习中,我们讲开始过渡到一个真正的websecurity例子。 第二天中我们知道了如何使用handler来处理客户端提交上来的用户名与密码,而在今天的学习中,我们将会使用服务端预先配置的用户名与密码来authenticate客户端提交上来的值。
1405 0
|
6月前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
6月前
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
90 0
|
6月前
|
Java 应用服务中间件 Spring
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
147 0
|
6月前
|
Java 应用服务中间件 Spring
WebService - CXF开发Server和Client(main方法测试)
WebService - CXF开发Server和Client(main方法测试)
91 0
|
存储 测试技术
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
129 0
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
|
Java Android开发
哇!eclipse+webservice开发实例居然这样写(有源码可用)
哇!eclipse+webservice开发实例居然这样写(有源码可用)
146 0
哇!eclipse+webservice开发实例居然这样写(有源码可用)