1、服务端开发
1.1 新建web项目HelloJaxWsService
1.2 SEI接口
编写SEI(Service Endpoint Interface),SEI在webservice中称为portType,在java中称为接口。
public interface IHelloWorldDao {
public String sayName(String name);
}
2.3 SEI接口的实现类
SEI的实现类中服务方法,可以对外由客户端通过网络协议访问。
@WebService
public class HelloWorldDaoImpl implements IHelloWorldDao {
@Override
public String sayName(String name) {
return "Hello: " + name;
}
}
2.4 发布Web Service
public class PublicTest {
public static void main(String[] args) {
// 发布服务
String address = "http://localhost:7888/helloWorld";
Endpoint.publish(address, new HelloWorldDaoImpl());
}
}
2.5 访问发布的Web Service
在浏览器输入地址:http://localhost:7888/helloWorld
2、客户端开发
2.1 新建Java项目,进行webService服务的调用
2.2 使用wsimport生成服务端接口的调用代码
wsimport.exe在jdk的bin目录中
wsimport通过wsdl说明书的地址生成客户端的调用代码。
wsimport.exe位于JAVA_HOME\bin目录下.
常用参数为:
-s <目录> - 将生成.java文件。
-p <生成的新包名> -将生成的类,放于指定的包下。
(wsdlurl) http://server:port/service?wsdl,必须的参数。
2.3 编写测试代码,进行WebService的调用
2.3.1 第一种调用方法
public class ClientTest1 {
public static void main(String[] args) {
// 服务视图
HelloWorldDaoImplService helloWorldDaoImplService = new HelloWorldDaoImplService();
// portType
HelloWorldDaoImpl helloWorldDaoImplPort = helloWorldDaoImplService
.getHelloWorldDaoImplPort();
// 调用webService提供的服务
String str = helloWorldDaoImplPort.sayName("zhang");
System.out.println(str);
}
}
2.3.2 第一种调用方法的结果
2.3.3 第二种调用方法
public class ClientTest2 {
public static void main(String[] args) throws MalformedURLException {
// wsdl地址
URL wsdlDocumentLocation = new URL(
"http://localhost:7888/helloWorld?wsdl");
// serviceName
QName serviceName = new QName("http://daoImpl.jaxwsservice.com/",
"HelloWorldDaoImplService");
// 通过手动指定wsdl地址和服务名称来创建服务视图
Service service = Service.create(wsdlDocumentLocation, serviceName);
// 接口的class来创建接口,然后调用服务方法
HelloWorldDaoImpl port = service.getPort(HelloWorldDaoImpl.class);
// 通过服务来调用方法
String str = port.sayName("zhang");
System.out.println(str);
}
}
2.3.4 第二种调用方式的结果