用 Eclipse 开发 WebService 项目
一、创建 Service
1. 在 Eclipse 下新建一个动态Web项目
3. 编写 SayHello 类的代码
package org.sunny.service;
//包不要引用错了
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
//注解@WebService不能少
@WebService
public class SayHello {
//该方法为客户端调用的方法,方法名任意
public String say(String name){
return "Hello " + name + " , this is SayHelloService !" ;
}
public static void main(String[] args) {
//第一个参数是访问时的url,9091是任意一个不占用的端口
Endpoint.publish("http://localhost:9091/Service/SayHello", new SayHello());
System.out.println("service success !");
}
}
@WebService 注解用于对接口和类进行注解,表示要把这个接口/类发布为 WEB 服务。比如又新建个类 Organization 并对外发布,就在类上加上 @WebService,这样 Client 就可以使用这个类了。如下:
package org.sunny.server;
import javax.jws.WebService;
@WebService
public class Organization {
private Integer orgid;
private String name;
private String address;
public Integer getOrgid() {
return orgid;
}
public void setOrgid(Integer orgid) {
this.orgid = orgid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
4. 发布 Service
运行测试 SayHello 类发布 Service,在 SayHello 类文件的任意空白处点击鼠标右键:
运行后将会调用类中的 main 方法,运行后出现如下信息则表示发布 service 成功:
打开浏览器访问:http://localhost:9091/Service/SayHello?wsdl ,注意:“?wsdl” 是必须要添加的。
二、创建 Client
1. 新建客户端类 ClientToSay :
本例是把 Client 和 Service 放在同一个项目下。
当然也可以新建一个动态Web项目来做客户端,如下:
2. 生成客户端的中间代码
用 wsimport 命令为客户端中间代码。wsimport 是 JDK 自带的命令,可以根据 wsdl 文档生成客户端中间代码(相应的类文件),基于生成的代码编写客户端,可以省很多麻烦。
打开命令行窗口,输入以下命令:
wsimport -s E:\SunnyWen\Data\Java_web\WebServiceDemo\src -p org.sunny.client.config -keep http://localhost:9091/Service/SayHello?wsdl
-s 后面的是项目 src 所在的路径
-p 后面的是通过该命令生成的类所在的包
3. 编写 ClientToSay 类的代码
package org.sunny.client;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
//包别导错了
import javax.xml.ws.WebServiceClient;
//导入两个命令生成的类
import org.sunny.client.config.SayHello;
import org.sunny.client.config.SayHelloService;
//注解@WebServiceClient需要加入
@WebServiceClient
public class ClientToSay {
public static void main(String[] args) {
// 方法一
/*try {
// 服务WSDL Document的地址
URL url = new URL("http://localhost:9091/Service/SayHello?wsdl");
// 1. QName,QName是 qualified name 的简写。
// 2. QName由名字空间(namespace)前缀(prefix)以及冒号“:”,还有一个元素名称构成。
// 由package-info.java文件可知namespace为http://service.sunny.org/,
QName qname = new QName("http://service.sunny.org/", "SayHelloService");
Service service = Service.create(url, qname);
SayHello sayHello = service.getPort(SayHello.class);
String result = sayHello.say("Sunny01");
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}*/
// 方法二
//通过SayHelloService的getSayHelloPort()方法的SayHello接口
SayHello sayHello = new SayHelloService().getSayHelloPort();
//调用SayHello接口的say方法
String result = sayHello.say("Sunny02");
//输出返回内容
System.out.println(result);
}
}
Ok,完毕!
参考: https://www.cnblogs.com/FlyingPuPu/p/5335138.html