WebService第一课
程序员文章站
2022-04-29 20:58:54
...
什么是WebService
webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互。
Web services 使用 XML 来编解码数据,并使用 SOAP 借由开放的协议来传输数据。
快速实现一个基于jws的weservice项目
1、服务器的建立
创建接口
@WebService
public interface MyServices {
public String sayHello(String name);
创建实现类
@WebService(endpointInterface="org.gege.webservice.hello.MyServices")
public class MyServiceImpl implements MyServices {
@Override
public String sayHello(String name) {
System.out.println("Hello "+ name);
return name;
}
开启服务
public class MyService {
//webService 服务
public static void main(String[] args) {
String address ="http://localhost:8881/ns";
Endpoint.publish(address,new MyServiceImpl());
}
打开浏览器访问 http://localhost:8881/ns?wsdl
2、客户端的建立
public class WebServiceClient {
//webService 客户端
public static void main(String[] args) throws MalformedURLException {
//创建访问wsdl服务地址的url
URL url =new URL("http://localhost:8881/ns?wsdl");
//通过Qname指定服务的具体信息
QName qName = new QName("http://hello.webservice.gege.org/", "MyServiceImplService");
//创建服务
Service service = Service.create(url,qName);
//实现接口
MyServices services = service.getPort(MyServices.class);
//调用服务的功能
System.out.println(services.sayHello("gege"));
//此客户端实现 依赖了服务的接口 存在缺陷
}
通过wsimport则生成Java的客户端实现
wsimport简介
wsimport也是在JDK的bin目录下的一个exe文件(Windows版),主要功能是根据服务端发布的wsdl文件生成客户端存根及框架,负责 与Web Service 服务器通信,并在将其封装成实例,客户端可以直接使用,就像使用本地实例一样。对Java而言,wsimport帮助程序员生存调用web service所需要的客户端类文件.java和.class。要提醒指出的是,wsimport可以用于非Java的服务器端,如:服务器端也许是C# 编写的web service,通过wsimport则生成Java的客户端实现。
命令参数说明:
-d 生成客户端执行类的class文件的存放目录
-s 生成客户端执行类的源文件的存放目录
-p 定义生成类的包名
-keep 选项用来指示是否保留编译后的源文件
通过wsimport生成的代码来实现客户端调用服务器端
public static void main(String[] args) {
MyServiceImplService myServiceImplService = new MyServiceImplService();
MyServices myServiceImplPort = myServiceImplService.getMyServiceImplPort();
System.err.println(myServiceImplPort.sayHello("gege"));
}
推荐阅读