我们可以接受别人提供的服务,同时,我们也可以自己发送一条服务给别人使用:
首先我们引入webservice相关jar包
然后我们创建一个实体类Phone
package cn.qblank.ws;
public class Phone {
private String name;//操作系统名
private String owner;//拥有者
private int total;//市场占有率
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}
然后我们自己写一个服务类PhoneService,并测试运行
package cn.qblank.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService(serviceName = "PhoneManage", //修改服务名
targetNamespace = "http://ws.qblank.cn") //修改命名空间,默认包名取反
public class PhoneService {
/**
* @WebMethod(operationName="getMObileInfo"): 修改方法名
* @WebResult(name="phone"):修改返回参数名
* @WebParam(name="osName"):修改输入参数名
*/
@WebMethod(operationName = "getPhone")
public @WebResult(name = "phone") Phone getPhone(@WebParam(name="osName") String osName){
Phone phone=new Phone();
if(osName.endsWith("android")){
phone.setName("android");
phone.setOwner("google");
phone.setTotal(80);
}else if(osName.endsWith("ios")){
phone.setName("ios");
phone.setOwner("apple");
phone.setTotal(15);
}else{
phone.setName("windows phone");
phone.setOwner("microsoft");
phone.setTotal(5);
}
return phone;
}
@WebMethod(exclude=true) //把该方法排除在外
public void sayHello(String city){
System.out.println("你好:"+city);
}
//测试
public static void main(String[] args) {
String address2="http://127.0.0.1:8888/ws/phoneManage";
/**
* 发布webservice服务
* 1.address:服务地址
* 2.implementor
*/
Endpoint.publish(address2, new PhoneService());
System.out.println("打印地址:" + address2 + "?WSDL");
}
}
开启服务:
然后我们访问该路径即可看到我们提供的服务
然后我们可以测试一下,同样的通过wsimport工具,将xml解析成java文件
wsimport -s ./ -p cn.qblank.wsimport http://127.0.0.1:8888/ws/phoneManage?WSDL
然后我们将生成的java文件拷贝到项目中或者我们也可以打成jar包,以jar包的形式引入然后我们就来测试下我们自己提供的数据是否能被接受到
测试类:
package cn.qblank.client;
import cn.qblank.wsimport.Phone;
import cn.qblank.wsimport.PhoneManage;
import cn.qblank.wsimport.PhoneService;
public class Test {
public static void main(String[] args) {
//服务
PhoneManage ws = new PhoneManage();
//访问方式
PhoneService phoneServicePort = ws.getPhoneServicePort();
Phone phoneInfo = phoneServicePort.getPhone("android");
System.out.println("手机信息:" + phoneInfo.getName());
System.out.println("手机拥有者:" + phoneInfo.getOwner());
System.out.println("手机信息:"+phoneInfo.getTotal());
}
}