1、写一个需要发布的接口
-
package com.hb;
-
-
import javax.jws.WebParam;
-
import javax.jws.WebService;
-
-
@WebService
-
public interface IService {
-
-
public void hello(@WebParam(name="username") String username);
-
}
备注: 一定要在接口名称上面用 @WebService 注解标示,参数@WebParam(name="username")只是说明在wsdl中指明参数的名字是username
2、对定义接口的实现
-
package com.hb;
-
-
import java.util.Date;
-
import javax.jws.WebParam;
-
import javax.jws.WebService;
-
-
@WebService(endpointInterface="com.hb.IService")
-
public class ServiceImp implements IService{
-
-
@Override
-
public void hello(@WebParam(name = "username") String username) {
-
System.out.println("hello " + username + " now is " + new Date());
-
}
-
-
}
备注: 一定要在接口名称上面用 @WebService 注解标示 ,里面一定要标注它对外的接口,在后面的客户端调用会体现出来。
3、发布对外提供的接口
-
package com.hb;
-
-
import javax.xml.ws.Endpoint;
-
-
public class ServiceMain {
-
-
public static void main(String[] args) {
-
String address = "http://172.16.32.72:7777/hb";
-
Endpoint.publish(address, new ServiceImp());
-
System.out.println("发布消息成功");
-
}
-
-
}
在地址栏中输入 http://172.16.29.89:7777/hb?wsdl,就会出现一系列xml格式的文档,这个就表示发布的成功。

客户端
-
package com.hb;
-
-
import java.net.MalformedURLException;
-
import java.net.URL;
-
-
import javax.xml.namespace.QName;
-
import javax.xml.ws.Service;
-
-
public class Client {
-
-
-
-
-
-
public static void main(String[] args) throws MalformedURLException {
-
-
-
URL url = new URL("http://172.16.32.72:7777/hb?wsdl");
-
-
-
-
-
-
QName qname = new QName("http://hb.com/","ServiceImpService");
-
-
Service service = Service.create(url, qname);
-
-
IService iservice = service.getPort(IService.class);
-
-
iservice.hello("huangbiao");
-
-
}
-
-
}
备注:QName qname = new QName("http://hb.com/","ServiceImpService");两个参数分别对应上图中的targetNamespace 和 name。
如果在实现对外提供的接口类中没有@WebService(endpointInterface="com.hb.IService"),则会提示不认识这个接口。
上面全部操作不需要引入任何外部jar包。