在JAX-RPC 1.1中,开发人员需要写一个接口类Service Endpoint Interface(SEI),在JAX-WS 2.0中,开发人员一上来就可以直接写自己的实现类. 通过使用annotations,自动生成SEI和其他一些文件.这样有助于开发人员专注于自己想开发的部分,而不必要地分散精力去维护其他的一些附属文件.
下面通过一个HelloWorld的例子来看看,JAX-WS 2.0 API的应用过程.程序是客户端传给服务端一个名字,经过服务端处理后,返回到客户端并打印出来.
一.环境配置.
1.JDK 5.0下载: http://java.sun.com/j2se/1.5.0/download.jsp
2.Java EE 5.0 App Server.
https://glassfish.dev.java.net/public/downloadsindex.html
本例中测试用了Build 37
下载完毕后请设置一下Path.还有例子中使用的命令对应于Cygwin,如果用Dos或Linux的话,请适当更改相应的形式.
例子中执行中的命令行以E:/jaxws20为基准,在其下面创造相对应的文件夹.
二.编写建立服务端
1.实现类.
package endpoint;
import javax.jws.WebService;
import javax.jws.WebMethod;
@WebService()
public class HelloWorld{
//the implementation class must have a default public constructor
public HelloWorld() {};
@WebMethod(operationName="sayHello", action="urn:SayHello")
public String sayHello(String name){
return "Hello "+ name + "!";
}
}
请注意实现类必须标注WebService(),还必须包括一个default public constructor.
2.编译实现类.
编译前,创造相应文件夹build/classes/service来保存class文件.还请注意命令在同一行.
javac -classpath $GLASSFISH_HOME/lib/javaee.jar -d ./build/classes/service endpoint/HelloWorld.java
3.生成相应文件
在E:/jaxws20下,执行下面的命令,注意事先生成/build/generated.
$GLASSFISH_HOME/bin/wsgen.bat-cp ./build/classes/service -keep -d ./build/classes/service -r ./build/generated -wsdl endpoint.HelloWorld
通过这个命令,会生成相对应的WSDL文件.
4.打包
4.1 WEB-INF`结构准备
WEB-INF/classes/
WEB-INF/wsdl/
4.2Web.xml
在WEB-INF/下,编写下面的文件.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:j2ee="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<description>HelloWorld Service</description>
<display-name>HelloWorldWAR</display-name>
<servlet>
<description>Endpoint for HelloWorld Web Service</description>
<display-name>HelloWorldWebService</display-name>
<servlet-name>HelloWorldPort</servlet-name>
<servlet-class>endpoint.HelloWorld</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldPort</servlet-name>
<url-pattern>/HelloWorldService</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
4.3 拷贝文件
cp -r build/classes/service/endpoint ./WEB-INF/classes/
cp build/generated/* archive/WEB-INF/wsdl/
4.4打包
jar cvf helloworld-webservice.war WEB-INF/
5.配置
先启动服务器,
asadmin.bat start-domain domain1
配置到服务器中,
asadmin.bat deploy --user admin --password adminadmin --host localhost --port 4848 --contextroot helloworld-webservice --upload=true --target server helloworld-webservice.war
三.客户端
1.客户端类.
在client/下,
package client;
import javax.xml.ws.WebServiceRef;
import endpoint.HelloWorldService;
import endpoint.HelloWorld;
public class WSClient{
@WebServiceRef(wsdlLocation=
"http://localhost:8080/helloworld-webservice/HelloWorldService?WSDL")
static HelloWorldService service;
public static void main(String[] args){
try{
WSClient client = new WSClient();
client.callEndpoint(args[0]);
}catch(Exception e){
e.printStackTrace();
}
}
public void callEndpoint(String name){
try{
HelloWorld port = service.getHelloWorldPort();
System.out.println(port.sayHello(name));
}catch(Exception e){
e.printStackTrace();
}
}
}
2.生成相关文件
在编译客户端类之前, 需要从服务端公开中的WSDL生成相关的文件.
wsimport.bat -keep -d ./build/classes/client http://localhost:8080/helloworld-webservice/HelloWorldService?WSDL
3.编译客户端类
javac-d ./build/classes/client -classpath $GLASSFISH_HOME/lib/javaee.jar/;$GLASSFISH_HOME/lib/appserv-ws.jar/;./build/classes/client client/WSClient.java
四.执行
在build/classes/client/下,
appclient.bat -mainclassclient.WSClient Duke
你会看到如下反馈
Hello Duke!
分享到:
相关推荐
JAX-WS2.0 API
[奥莱理] RESTful Java 开发 (Jax-RS 2.0 实现) (英文版) [奥莱理] RESTful Java with JAX-RS 2.0 (E-Book) ☆ 图书概要:☆ Learn how to design and develop distributed web services in Java, using RESTful ...
Asynchronous Web Service Invocation with JAX-WS 2.0
jax-ws webservice类简介开发,包含文档以及源码,谢谢支持!get get get
通过使用 Java™ API for XML Web Services (JAX-WS) 技术设计和开发 Web 服务,可以带来很多好处,能简化 Web 服务的开发和部署,并能加速 Web 服务的开发。通过此教程,可以了解如何开发将其功能作为 Web 服务公开...
The Java API for XML Web Services(JAX-WS) 2.0. Specification: JSR-000224 - Java™API for XML Web Services v. 2.0 (“Specification”). Status: Pre-FCS, Proposed Final Draft
Written as an easy and practical guide, this book is a crash course on using JAX-RS 2.0, JSON, and WebSockets to develop RESTful services. Who this book is written for Developing RESTful Services with...
3.众多元数据(Annotations)会被JAX-WS用来描述Web Services的相关类,包括Common Annotations, Web Services Metadata, JAXB2的元数据和JAX-WS2.0规范自己的元数据. 4.Annotation Processing Tool(APT)是JAX-WS重要的...
基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...
RESTful Java with JAX-RS 2.0.pdf
本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL开始 2.2.1 ...
JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...
RESTful Java with JAX-RS 2.0 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者...
亲测可用,Jax-ws所需要的JAR包,拷贝到tomcat安装路径的lib里,实现了webservice发布到tomcat,赞!
MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht
The Java API for XML Web Services (JAX-WS) is a Java programming language API for creating web services, particularly SOAP services. JAX-WS is one of the Java XML programming APIs. It's a part of the ...
webService部署tomcat需要的jax-ws 的完整jar包
JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用
RESTful Java with JAX-RS 2.0, 2nd Edition 英文原版
Jax-WS的简单实例 Jax-WS的简单实例