一.WebService概述
1.WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用.
2.我们可以调用互联网上查询天气信息Web服务,然后将它嵌入到我们的程序(C/S或B/S程序)当中来,当用户从我们的网点看到天气信息时,他会认为我们为他提供了很多的信息服务,但其实我们什么也没有做,
只是简单调用了一下服务器上的一段代码而已。
简单理解:
名词1:XML.Extensible MarkuP Language -扩展性标记语言
•XML,用于传输格式化的数据,是Web服务的基础。
•namespace-命名空间。
•xmlns=“http://itcast.cn” 使用默认命名空间。
名词2:WSDL – WebService Description Language – Web服务描述语言。
•通过XML形式说明服务在什么地方-地址。
名词3:SOAP-Simple Object Access Protocol(简单对象访问协议)
•
SOAP =
在
HTTP
的基础上
+XML
数据。
•SOAP是基于HTTP的。
•SOAP的组成如下:
•
Envelope – 必须的部分。以XML的根元素出现。
•Headers – 可选的。
简单理解:
SOAP协议:因为是在http上发数据,所以必须先遵循http协议,xml部门即SOAP协议,必须包含Envelope元素和Body元素
三.如何发布一个WebService?
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目录查看到此命令..
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] 举报,一经查实,本站将立刻删除。