微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService专业术语以及入门程序

一.WebService概述

1.WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用.

2.我们可以调用互联网上查询天气信息Web服务,然后将它嵌入到我们的程序(C/S或B/S程序)当中来,当用户从我们的网点看到天气信息时,他会认为我们为他提供了很多的信息服务,但其实我们什么也没有做, 只是简单调用了一下服务器上的一段代码而已
3.学习WebService可以将你的服务(一段代码)发布到互联网上让别人去调用,也可以调用别人机器上发布的WebService,就像使用自己的代码一样.
简单理解:

(1)WebService就是两个系统的远程调用

(2)WebService之间的调用时跨语言的调用

二.名词解释

名词1:XML.Extensible MarkuP Language -扩展性标记语言
XML,用于传输格式化的数据,是Web服务的基础。
•namespace-命名空间。
xmlns=“http://itcast.cn” 使用认命名空间。
xmlns: itcast=“http://itcast.cn”使用指定名称的命名空间。
名词2:WSDL – WebService Description Language – Web服务描述语言。
通过XML形式说明服务在什么地方-地址。
通过XML形式说明服务提供什么样的方法 – 如何调用
名词3:SOAP-Simple Object Access Protocol(简单对象访问协议)
SOAP作为一个基于XML语言的协议用于有网上传输数据。
SOAP = HTTP 的基础上 +XML 数据。
SOAP是基于HTTP的。
•SOAP的组成如下:
Envelope – 必须的部分。以XML的根元素出现。
Headers – 可选的。
Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。
简单理解:
WSDL:为客户端提供的一个说明书,便于调用调用.说明书是从下往上看的.
SOAP协议:因为是在http上发数据,所以必须先遵循http协议,xml部门即SOAP协议,必须包含Envelope元素和Body元素

三.如何发布一个WebService?

1. Jdk1.6.0_21以后的版本发布一个WebService服务.(这里是服务端)
2.与Web服务相关的类,都位于javax.jws.*包中。
主要类有:
 @ WebService - 它是一个注解,用在类上指定将此类发布成一个 ws .
 Endpoint – 此类为端点服务类,它的方法 publish 用于将一个已经添加 @ WebService 注解对象绑定到一个地址的端口上。
3.代码
package cn.itcast.service;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
 * 将java类标记为实现Web Servie,或者将Java接口标记定义Web Servie接口
 * @author asuspc
 *
 */
@WebService //注释:标记此类是一个Web服务类
public class HelloService {
	//一个标准的服务端必须定义一个非静态不能是final的方法
	public String sayHello(String name,int age){
		System.out.println("sayHello is called...");
		return "hello"+name;
	}
	public String sayHi(String name){
		System.out.println("sayHello is called...");
		return "hello"+name;
	}
	public static void main(String[] args) {//publish内部开启了一个新的线程
		Endpoint.publish("http://localhost:5678/hello",new HelloService());
		System.out.println("Server ready..");
	}
}
(1)启动服务后可以看到控制台打印的数据...Server ready..
(2)访问http://localhost:5678/hello?wsdl



四.客户端与服务端的交互

1.使用Java jdk自带的wsimport命令..可以再jre的bin目录查看到此命令..


2.点击回撤,可以再E盘的根目录下看到命令生成代码..同时将命令生成文件夹拷贝到myeclipse中




3.编写App测试类
package cn.itcast.service;
/**
 * 调用服务端的客户端:地址栏输入http://125.217.57.91:5678/hello?wsdl
 * @author asuspc
 *
 */
public class App {
	public static void main(String[] args) {
		HelloServiceService hss=new HelloServiceService();//<service name="HelloServiceService">
		HelloService soap = hss.getHelloServicePort();//<port name="HelloServicePort" binding="tns:HelloServicePortBinding">
		String sayHello = soap.sayHello("李卫康");
		System.out.println(sayHello);
		System.out.println(soap.getClass().getName());//这说明了soap的实现类是一个代理类
	}
}
4.App类是根据wsdl说明书得到的

5.运行结果
hello李卫康 com.sun.proxy.$Proxy22

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐