java学习笔记之webservice(一)-入门实例,自定义webservice服务


1    WebService是用来做什么?

WebService是一种跨编程语言和跨操作系统知识库"操作系统平台的远程调用技术。用于网络通信,多台机器之间的数据交互。

 

2    与socket的区别

1. socket是在网络中的数据传输层,采用的是TCP/UDP协议,webservice是属于应用层,采用的是http协议

2. socket建立是长连接,webservice建立的是短连接(调用服务时建立连接,调用完毕后断开连接)

 

3    WebService入门实例

3.1  定义服务

a). 定义服务的接口:

package com.beauxie.webservice;

import javax.jws.WebService;

/**
 * 定义服务的接口
 * @author Beauxie
 *
 */
@WebService//此注解用在类上指定将此类发布成一个WebService
public interface Speaker {

  String sayHello(String name);

}

b). 创建实现这个接口的实现类:

package com.beauxie.webservice;

import javax.jws.WebService;

/**
 * 定义服务的实现类
 * @author Beauxie
 */
@WebService(endpointInterface="com.beauxie.webservice.Speaker")
public class Person implements Speaker {

	public String sayHello(String name) {
		 
		return "Hello,"+name;
	}

}

注意:接口和实现类中必须用@WebService注解,并且在实现类的注解中必须指定endpointInterface属性的值为接口的全限定名

3.2  发布服务

package com.beauxie.webservice;
import javax.xml.ws.Endpoint;

/**
 * 发布服务
 * @author Beauxie
 */
public class Service {
	
	public static void main(String[] args){
		
		//1.定义发布的地址
		String url = "http://localhost:8080/demo";
		
		//2.发布服务
		//第一个参数是指定你要发布的地址,第二个参数是你要发布的服务对象
		Endpoint.publish(url, new Person());
		
		System.out.println("服务器已启动");
	}

}
运行程序进行发布,运行结果:

 




然后打开浏览器访问http://localhost:8080/demo?wsdl,只要在客户端浏览器能看以下WSDL文档,说明服务发布成功:













3.3  客户端去调用服务

如果是内部系统之间的调用,那么提供2个信息就可以调用webservice:

1. wsdl的地址

2. 接口文件(jar包)

package com.beauxie.webservice;

import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

/**
 * 客服端调用
 * @author Beauxie
 *
 */
public class Client {
	
	public static void main(String[] args) throws Exception {
		
		//1.声明所发布的服务对应的wsdl地址
		URL url=new URL("http://localhost:8080/demo?wsdl");
		
		//2.声明所要调用的Qname
		QName qname=new QName("http://webservice.beauxie.com/", "PersonService");
		
		//3.创建客户端的服务代理对象
		Service service=Service.create(url,qname);
		Speaker speaker = service.getPort(Speaker.class);
		
		//4.调用服务的方法
		String str=speaker.sayHello("Beauxie");
		
		System.out.println(str);
	}

}
运行结果:


 

附:QName中两个参数所对应wsdl文档中参数:












其实可以直接访问http://localhost:8080/demo,但由于自己的电脑原因,无法访问,所以只能访问wsdl地址了。


》》未完待续,接下一篇


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值