一、什么是Web服务
简单来说就是在Internet上提供的这种服务,我们称这种服务为Web服务。
二、Web服务的主要目标?
是支持跨平台的可互操作性。
三、Web服务的优势
四、Web服务提供了一系列标准,定义了应用在Web上机进行互操作的规范,因此,Web服务的3个核心操作都是基于这些规范完成的。
三要素:
WSDL:WebService Description Language ---Web服务描述语言。
通过xml形式说明服务在什么地方----地址。
通过xml形式说明服务提供什么样的方法---如何调用。
SOAP:Simple Object Access Protocol 简单对象访问协议
SOAP作为一个基于XML语言的协议用于网上传输数据
SOAP=HTTP基础+XML数据。
UDDI: Universal Description Discovery and Integration统一描述发现和集称协议。
五、使用JAX-WS发布服务
要发布一个Web服务供第三方使用,我们通过JAX-WS来完成实现查看天气。
1、定义一个实体
package cn.yxj.publishEntity; import java.util.Date; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name="TemperatureInfo") public class TemperatureInfo { public TemperatureInfo() { } public TemperatureInfo(String city, Date date, int min, int max, int average, String desc) { this.city = city; this.date = date; this.min = min; this.max = max; this.average = average; this.desc = desc; } private String city;//城市 private Date date;//日期 private int min;//最低温度 private int max;//最高温度 private int average;//平均温度 private String desc;//描述 public String getCity() { return city; } public void setCity(String city) { this.city = city; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public int getMin() { return min; } public void setMin(int min) { this.min = min; } public int getMax() { return max; } public void setMax(int max) { this.max = max; } public int getAverage() { return average; } public void setAverage(int average) { this.average = average; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }
2、设计并实现服务接口。
package cn.yxj.publish; import java.util.Date; import java.util.List; import javax.jws.WebMethod; import javax.jws.WebService; import cn.yxj.publishEntity.TemperatureInfo; /** * 发布的天气接口 * @author * */ @WebService(targetNamespace="http://www.bdqn.cn/ws/weather") public interface WeatherService { @WebMethod List<TemperatureInfo> getWeathers(String city,List<Date> dates); }
3、定义一个实现类来实现接口
package cn.yxj.publish.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.jws.WebMethod; import javax.jws.WebService; import cn.yxj.publish.WeatherService; import cn.yxj.publishEntity.TemperatureInfo; @WebService(targetNamespace="http://www.bdqn.cn/ws/weather") public class WeatherServiceImpl implements WeatherService{ @WebMethod public List<TemperatureInfo> getWeathers(String city, List<Date> dates) { List<TemperatureInfo> list=new ArrayList<TemperatureInfo>(); for (Date date : dates) { list.add(getTemperature(city, date)); } return list; } @WebMethod(exclude=true) public TemperatureInfo getTemperature(String city,Date date){ return new TemperatureInfo(city,date,28,33,31,"晴"); } }
4、发布天气的服务
package cn.yxj.server; import javax.xml.ws.Endpoint; import cn.yxj.publish.impl.WeatherServiceImpl; public class Server { protected Server() throws Exception{ System.out.println("启动服务...."); //定义服务实现类 WeatherServiceImpl weatherServiceImpl=new WeatherServiceImpl(); //定义服务发布网址 /*String address="http://localhost:8084/WeatherService";*/ String address="http://192.168.15.40:8084/WeatherService";//让别人访问自己的web //发布服务 Endpoint.publish(address, weatherServiceImpl); } public static void main(String[] args) throws Exception { new Server(); System.out.println("服务准备就绪......"); Thread.sleep(5*60*1000); System.out.println("服务退出......"); System.exit(0);//关闭服务器 //System.out.println(http://localhost:8084/WeatherService?xsd=1); } }
简单的列子带大家配置Web Service 的服务。