什么是WebServices
Web Services 是应用程序组件
Web Services 使用开放协议进行通信
Web Services 是独立的(self-contained)并可自我描述
Web Services 可通过使用UDDI来发现
Web Services 可被其他应用程序使用
XML 是 Web Services 的基础
它是如何工作
- 基础的Web Services 平台是 XML+HTTP
- HTPP协议是最常用的因特网协议
- XML提供了一种可用于不同的平台编程语言之间的语言
Web Services平台的元素 - SOAP(简单对象访问协议)
- UDDI(它是一种目录服务)
- WSDL(Web Services 描述语言)
为什么使用Web Services
可在不同的应用程序与平台之间交换数据
通过案例来模拟Web Services执行机制
服务端
创建一个服务端的项目工程
定义一个interface,使用@WebServics注解标注接口,使用@MethodService注解标注方法
@WebService
public interface IScoreBiz {
/**
* 根据名字查询分数
* @param name
* @return
*/
@WebMethod
public Integer find(String name);
}
定义此接口的实现类,使用@WebService注解标注实现类
@WebService
public class ScoreBizImpl implements IScoreBiz {
Random random = new Random();
@Override
public Integer find(String name) {
return random.nextInt(150);
}
}
使用(EndPoint)终端发布 WebService
public class StartServie {
/**
* 使用ENDPOINT(终端)类发布WEBSERVICE
*/
public static void main(String[] args) {
String address = "http://localhost:8080/WebServices";
Endpoint.publish(address, new ScoreBizImpl());
System.out.println("服务启动了");
}
}
测试服务
浏览器直接输入:(项目名是你自己创建的)
http://localhost:8080/WebServices?wsdl
使用Eclipse自带的工具进行测试
点击javee
然后点击 Launch the Web Services Explorer–>WSDL Page 输入url
下面就是你通过洪端发布的方法
输入用户名进行查询分数
客户端
使用jdk的wsimport.exe(java_home\bin)工具生成客户端代码,代开cmd.exe
你可能会遇到这个问题,那么怎么解决呢?在我博客里面解决办法。
当你解析完成的时候,在你新建的项目名里面就会有客户端的数据完成测试
编写查询分数的类
public class FindScore {
/**
* 调用客户端
* @param name
* @return
*/
public Integer find(String name) {
// 创建工厂对象
ScoreBizImplService factory = new ScoreBizImplService();
// 通过工厂对象创建WebServiceImpl对象
ScoreBizImpl scoreBizImplPort = factory.getScoreBizImplPort();
Integer score = scoreBizImplPort.find(name);
return score;
}
}
测试类
public static void main(String[] args) {
FindScore findScore = new FindScore();
String name = "zs";
Integer score = findScore.find(name );
System.out.println(name+"="+score);
}
控制台输出