1 服务端的发布
第一步: 创建一个 Java 项目
第二步: 创建一个类, 加入 Webservice 注解
第三步: 提供一个方法 sayHello
第四步: 在 main 方法中调用 jdk 提供的发布服务的方法
第五步:访问服务的 wsdl文档(服务的发布地址+?wsdl)http://192.168.31.247:8888/hello?wsdl
package com.test.webservice; import javax.jws.WebService; import javax.xml.ws.Endpoint; //1、给类添加注解 @WebService public class HelloService { //2、声明实例方法 public String sayHello(String name,int age){ System.out.println("服务端的 sayHello 方法被调用了。 。 。 。 "); return "hello:"+name+"---age:"+age; } public static void main(String[] args) { String address = "http://192.168.31.247:8888/hello"; Object implementor = new HelloService(); //3 使用端点服务,将对象绑定到一个地址和端口。同时必须要在端口后面给服务取一个名称 //第一个参数称为Binding即绑定地址, //第二个参数是实现者,即谁提供服务 Endpoint.publish(address, implementor); } }
运行上面的程序,可以看到程序一直处于运行状态,这和以前我们运行main程序一闪而过是不一样的。
我们可以在浏览器中访问wsdl文档:查看的效果如下
2 客户端调用
1 jdk 中 wsimport 命令使用
作用: 解析 wsdl 文件, 生成客户端本地代码
针对上面的第一个服务我们执行命令:wsimport -s . http://192.168.31.247:8888/hello?wsdl
得到的代码如下:
2 客户端调用
1、 使用wsimport命令解析wsdl文件生成本地代码
2、 通过本地代码创建一个代理对象
3、 通过代理对象实现远程调用
复制生成的所有的.java文件到项目中
创建类调用服务
package com.test.webservice; /** * 1、 使用 wsimport 命令解析 wsdl 文件生成本地代码 * 2、 通过本地代码创建一个代理对象 * 3、 通过代理对象实现远程调用 * @author jepson * */ public class App { public static void main(String[] args) { HelloServiceService ss = new HelloServiceService(); HelloService proxy = ss.getHelloServicePort(); String s= proxy.sayHello("tom", 25); System.out.println(s); } }
运行上面的代码结果为:
服务程序运行结果为: