基于 jdk1.7 发布一个 WebService 服务

1 服务端的发布

第一步: 创建一个 Java 项目
第二步: 创建一个类, 加入 Webservice 注解
第三步: 提供一个方法 sayHello
第四步: 在 main 方法中调用 jdk 提供的发布服务的方法

第五步:访问服务的 wsdl文档(服务的发布地址+?wsdlhttp://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);
    }
}

 运行上面的代码结果为:

 服务程序运行结果为:

看懂使用说明书WSDL

原文地址:https://www.cnblogs.com/jepson6669/p/8884629.html