WebService个人学习记录——Hello WebService

Webservice定义: http://baike.baidu.com/view/67105.htm?fromId=837392

概念
    SOAP协议:Simple Object Access Protocal 简单对象访问协议
    WSDL:WebService描述语言,使用XML语言,人机可读。
    UDDI:统一发现、发布和集成协议。企业可以使用它对WebService进行注册和搜索。

一般WebService分两种
   REST式,基于HTTP协议;
   RPC式,基于SOAP协议,SOAP也是基于HTTP传输。狭义上的WebService是指基于SOAP协议的。


示例 HelloWorld WebService
   Server端  发布WebService
package webservice.server;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class Hello {

	public String sayHello(String name){
		return "hello "+name;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Endpoint.publish("http://localhost:8080/webservice.server.Hello", new Hello());
		System.out.println("Hello WebService has been published!");
	}

}

操作:运行main方法,打印”Hello WebService has been published!“,成功对外发布WebService。

客户端
   在命令行输入命令,生成客户端代码。命令形式如下
引用
wsimport -p [包名] -keep [发布的服务地址?wsdl]

如生成本例的客户端代码,会在文件夹webservice/client下生成代码及编译文件。命令如下
引用
wsimport -p webservice.client -keep http://localhost:8080/webservice.server.Hello?wsdl

生成的文件结构为
引用
+webservice
   +client
      Hello.java(接口,不是server端的Hello.java)
      HelloService.java
      ObjectFactory.java
      package-info.java
      SayHello.java
      SayHelloResponse.java

利用这些生成的客户端代码,就可以调用这个WebService服务了。

最后, 调用服务
package webservice.client;

public class HelloClient {

	public static void main(String[] args) {
		Hello hello = new HelloService().getHelloPort();
		String info = hello.sayHello("webservice!");
		System.out.println(info);
	}

}

输出:hello webservice!
WebService调用成功。

参考资料
http://www.360doc.com/content/11/1104/16/1073512_161674938.shtml

你可能感兴趣的:(java,webservice,SOAP)