加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

jax-ws 实现webservice

发布时间:2020-12-16 23:05:34 所属栏目:安全 来源:网络整理
导读:? ?文章中http://www.voidcn.com/article/p-zcgfykne-bby.html 中我们曾谈到,JAX-WS可以实现webservice,与axis,cxf不同的是,JAX-WS是一种规范。 ? 一、什么是jax-ws ? ? ?JAX-WS规范是一组XML web services的 JAVA API ,JAX-WS允许开发者可以选择RPC-or

? ?文章中http://www.voidcn.com/article/p-zcgfykne-bby.html 中我们曾谈到,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的方法。

@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文件,

D:workspacejaxwssrc>wsgen??-cp??.??com.xj.service.Hello??-wsdl

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

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

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

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

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


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

(4)编写服务端并启动

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的客户端实现

D:workspacejaxws-client>wsimport?-p?com.xj.client?-keep??http://localhost/Jaxws/HelloService?wsdl

命令参数说明:

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

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

  -p:定义生成类的包名

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

wKiom1S-GlnjxxECAADwUDP55C0833.jpg

代码实现访问:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读