1. 运行环境要求 JDK 6.0 version
2. 系统环境变量
当在CMD模式下输入 命令 wsgen
出现 提示 这说明你的环境安装成功了.
先定义一个Interface 代码如下: (包名用....代替)
java 代码
- package ....;
-
- import javax.jws.WebMethod;
- import javax.jws.WebService;
-
- @WebService
- public interface HelloJaxWs {
-
- @WebMethod
- public String echoMessage(String mes);
-
- }
接口的实现 代码如下:
java 代码
- package ....
-
- import javax.jws.WebService;
-
-
- @WebService(endpointInterface=".....HelloJaxWs")
- public class HelloJaxWsImpl implements HelloJaxWs {
-
- @Override
- public String echoMessage(String mes) {
-
- return mes;
- }
-
- }
编译上述两个java文件,得到 .... *.class 后 利用 JDK6.0自带的 wsgen 工具生成 这里的包 .....为test.ws
命令如下图所示:
wsgen -cp . ...HelloJaxWsimpl
wsgen工具在 test.ws目录下生成 javaws\辅助类, 具体作用不详细介绍
java 代码
- import javax.xml.bind.annotation.XmlAccessType;
- import javax.xml.bind.annotation.XmlAccessorType;
- import javax.xml.bind.annotation.XmlElement;
- import javax.xml.bind.annotation.XmlRootElement;
- import javax.xml.bind.annotation.XmlType;
-
- @XmlRootElement(name = "echoMessage", namespace = "http://ws.test/")
- @XmlAccessorType(XmlAccessType.FIELD)
- @XmlType(name = "echoMessage", namespace = "http://ws.test/")
- public class EchoMessage {
-
- @XmlElement(name = "arg0", namespace = "")
- private String arg0;
-
-
-
-
-
-
- public String getArg0() {
- return this.arg0;
- }
-
-
-
-
-
-
- public void setArg0(String arg0) {
- this.arg0 = arg0;
- }
-
- }
java 代码
- import javax.xml.bind.annotation.XmlAccessType;
- import javax.xml.bind.annotation.XmlAccessorType;
- import javax.xml.bind.annotation.XmlElement;
- import javax.xml.bind.annotation.XmlRootElement;
- import javax.xml.bind.annotation.XmlType;
-
- @XmlRootElement(name = "echoMessageResponse", namespace = "http://ws.test/")
- @XmlAccessorType(XmlAccessType.FIELD)
- @XmlType(name = "echoMessageResponse", namespace = "http://ws.test/")
- public class EchoMessageResponse {
-
- @XmlElement(name = "return", namespace = "")
- private String _return;
-
-
-
-
-
-
- public String get_return() {
- return this._return;
- }
-
-
-
-
-
-
- public void set_return(String _return) {
- this._return = _return;
- }
-
- }
然后我们须要编写一个发布WebService的客户类:
代码如下:
java 代码
- import javax.xml.ws.Endpoint;
-
- import test.ws.HelloJaxWsImpl;
-
- public class PubWs {
- public static void main(String[] args){
- Endpoint.publish("http://localhost:8080/ws/HelloService",new HelloJaxWsImpl());
- }
- }
到这里发布WebService 的工作已经结束,大家可以运行 PubWs 然后打开浏览器输入
http://localhost:8080/ws/HelloService?wsdl
假如出现
wsdl 的定义就
表示发布成功
接下来的工作就是开发客户端
保持运行PubWs 这个程序
生成wsdl的存根(stud)用很多种方法,可以用Axis 中的wsdl2java;
这里我们就直接用jdk1.6中的wsimport
wsimport http://localhost:8080/ws/HelloService?wsdl 运行这个命令就可以简单的生成客客端了
然后编写TestWs类测试WebService
代码如下:
java 代码
- public class TestWs {
-
-
-
-
- public static void main(String[] args) {
-
- HelloJaxWsImplService service = new HelloJaxWsImplService();
- HelloJaxWs caller =service.getHelloJaxWsImplPort();
- String mes =(String)caller.echoMessage("victor");
- System.out.println("message: "+mes);
-
- }
-
- }
输出结果为 message: I am victorkevin
到此快带发布WebService的工作结束