[webservice] 03_使用jdk发布第一个webservice服务并调用

Android 4.0

使用jdk发布第一个webservice服务并调用

如何发布一个web服务?

发布第一个webservice服务


调用webservice服务

wsimport命令


一、发布一个webservice步骤:
jdk最低版本要求:jdk1.6.0_21
1、将一个类或者接口标记注解@WebService
2、使用EndPoint类,发布服务(开启新的线程)
注意:一个合格的webservice方法
①不能被static修饰
②不能被final修饰
否则会报错:
The web service defined by the class cn.zengfansheng.webservice.publish.Hello does not contain any valid WebMethods.
二、案例:sayHello
①服务端
1、将一个类Hello定义增加注解 @WebService
2、使用 Endpoint.publish(address, new Hello());发布服务
②客户端
1、通过服务端发布的address,加上?wsdl,查看发布的webservice
http://localhost:8080/sayhello?wsdl 
2、找到发布的webservice的名称和里面发布的方法
<service name="HelloService">
    <port name="HelloPort" binding="tns:HelloPortBinding">
        <soap:address location="http://localhost:8080/sayhello"/>
    </port>
</service>
3、使用wsimport工具生成java文件,然后将其拷贝到我们的项目中去
wsimport -s . http://localhost:8080/sayhello?wsdl

注意:生成的java文件的包名不能改动,否则会报错,当然我们可以使用wsimport -p 参数来自定义包名
4、new对象及调用发布服务的方法
HelloService service = new HelloService();
        Hello hello = service.getHelloPort();
        String s = hello.sayHello("hacket");
        System.out.println(s);

三、代码:
1、服务端:
package cn.zengfansheng.webservice.publish;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
 * @WebService 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
 */
@WebService
public class Hello {
    public static void main(String[] args) {
        /**
         * 参数1:绑定服务的发布地址
         * 
         * 参数2:提供服务的实例
         */
        String address = "http://localhost:8080/sayhello";
        Endpoint.publish(address, new Hello());
       
        // Endpoint.publish会重新开启一个线程,所以下面会输出
        System.out.println("server ready...");
    }
    public String sayHello(String name) {
        System.out.println("发布服务~~");
        return "Hello," + name;
    }
}
2、客户端:
package cn.zengfansheng.publish;
import cn.zengfansheng.webservice.publish.Hello;
import cn.zengfansheng.webservice.publish.HelloService;
public class MyApp {
    /**
     * @param args
     */
    public static void main(String[] args) {
        HelloService service = new HelloService();
        Hello hello = service.getHelloPort();
        String s = hello.sayHello("hacket");
        System.out.println(s);
    }
}