JAX-WS服务器端
TemperatureInfo 实体类
package cn.entity; import java.util.Date; import javax.xml.bind.annotation.XmlRootElement; /** * 天气预报实体类 * */ @XmlRootElement(name="TemperatureInfo") public class TemperatureInfo { private String city;//城市 private Date date;//日期 private int min;//最低 private int max;//最高 private int average;//平均值 private String desc;//说明 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; } 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; } }
WeatherService 业务类接口与实现
package cn.biz; import java.util.Date; import java.util.List; import javax.jws.WebMethod; import javax.jws.WebService; import cn.entity.TemperatureInfo; /** * Web 服务端 * */ @WebService(targetNamespace="http://www.baidu.cn/ws/Weather") public interface WeatherService { /** * 返回3天的天气 * @param city 城市 * @param dates 哪几天 * @return 天气列表 */ @WebMethod List<TemperatureInfo> getweathers(String city,List<Date> dates); }
package cn.biz.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; import javax.jws.WebMethod; import javax.jws.WebService; import cn.biz.WeatherService; import cn.entity.TemperatureInfo; @WebService(targetNamespace="http://www.baidu.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)); } System.out.println("服务器端的方法被成功调用..."); return list; } /** * WSDL 不要暴露出来的方法 * */ @WebMethod(exclude = true) private TemperatureInfo getTemperature(String city, Date date) { Random ran = new Random(); final String[] WEATHERS={"晴","雨","多云","雪"}; int min = ran.nextInt(); int max=0; do{max=ran.nextInt(45);}while(min>max); int average = (max+min)/2; String werther=WEATHERS[ran.nextInt(WEATHERS.length)]; //随机产生天气 return new TemperatureInfo(city, date, min, max, average, werther); } }
Server 本地服务器主程序
package cn.server; import java.sql.Timestamp; import javax.xml.ws.Endpoint; import cn.biz.WeatherService; import cn.biz.impl.WeatherServiceImpl; /** * 本地服务器主程序 * */ public class Server { /** * 构造方法 * */ protected Server() { //天气预报服务 WeatherService weatherService = new WeatherServiceImpl(); //访问地址,端口号 8084 ,查看 WSDL 文件,http://localhost:8084/WeatherService?wsdl String address = "http://localhost:8084/WeatherService"; //发布服务 Endpoint.publish(address, weatherService); } //将服务发布到本地的 jdk6 自带的 Web 容器中 public static void main(String[] args) { System.out.println(new Timestamp(System.currentTimeMillis())); new Server();//在构造函数中启动 try { Thread.sleep(30*60*1000);//分钟 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(new Timestamp(System.currentTimeMillis())); System.exit(0);//关闭服务器 } }
PS:先启动 Tomcat ,后运行控制器,最后在浏览器上输入“http://localhost:8084/WeatherService?wsdl”
找到了“C:\Program Files (x86)\Java\jdk1.7.0_45\bin”下的 “wsimport.exe”
在同级文件夹下创建 demo 包,用来存在Java包
开始进行 cmd
获取的 Java包 如图
JAX-WS客户端
TemperatureInfo 修改 “protected Date date;//修改类型,包括 get 和 set 的方法" 和覆写 toString 方法
Client 客户端代码
package cn.baidu.Client; import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.xml.namespace.QName; import javax.xml.ws.Service; import cn.baidu.ws.weather.TemperatureInfo; import cn.baidu.ws.weather.WeatherServiceImpl; /** * 客户端代码 * */ public class Client { //可以在 WeatherServiceImplService.java 中找 public static void main(String[] args) throws Exception { //创建 2 个后面要用到的 2 个 QName //1.根据服务地址创建 URL 对象 URL wsdlDocumentLocation = new URL("http://localhost:8084/WeatherService?wsdl"); QName serviceName = new QName("http://www.baidu.cn/ws/Weather","WeatherServiceImplService"); //2.根据 URL 对象和服务名称创建 Service 类 Service service = Service.create(wsdlDocumentLocation,serviceName); //3.获取服务接口 QName portName = new QName("http://www.baidu.cn/ws/Weather","WeatherServiceImplPort"); WeatherServiceImpl port = service.getPort(portName,WeatherServiceImpl.class); //准备参数 List<Date> dates = new ArrayList<Date>(); dates.add(java.sql.Date.valueOf("2014-10-16")); dates.add(java.sql.Date.valueOf("2014-10-17")); dates.add(java.sql.Date.valueOf("2014-10-18")); List<TemperatureInfo> obj = port.getweathers("广州", dates); for (TemperatureInfo temperatureInfo : obj) { //产生 toString 方法 System.out.println(temperatureInfo); } } }
效果图:
相关推荐
**标题:“JAX-WS获取天气预报wsdl”** 这篇内容主要探讨了如何利用Java API for XML Web Services (JAX-WS) 来通过Web Service Description Language (WSDL) 文件获取天气预报信息。JAX-WS是Java平台上的一个标准...
标题"jax-rs jax-ws所需包,亲测可用"表明这个压缩包包含了用于开发Java RESTful Web服务(JAX-RS)和Java SOAP Web服务(JAX-WS)所需的库文件。这些库是Java应用程序进行Web服务交互的核心组件,确保了对HTTP协议...
把这些JAR文件复制到Tomcat安装目录的`lib`子目录下,可以确保Tomcat在启动时加载这些依赖,从而支持JAX-WS服务的发布和执行。这一步骤对于那些没有内置JAX-WS支持的轻量级应用服务器,如Tomcat来说尤其重要。 在...
在WebLogic服务器上部署JAX-WS服务时,可能会遇到一些配置问题。JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和部署Web服务。WebLogic作为一款强大的Java EE应用服务器,支持JAX-WS...
标题提到的"JAX-WS所需Jar包"是指为了在Java环境中支持JAX-WS功能,开发者需要的一组核心库。这些库包含了运行和开发JAX-WS Web服务所必需的组件。下面将逐一解释这些库的作用: 1. **jaxb-xjc.jar**: 这是Java ...
- **JAX-WS运行时环境**:Java EE应用服务器(如Tomcat、Glassfish、WildFly等)内置了JAX-WS支持,可以自动处理服务的生命周期,包括服务的发布、查找和取消发布。 4. **优势:** - **简单性**:JAX-WS使用注解...
JAX-WS 2.0是JAX-WS的第二个主要版本,它在JAX-RPC(Java API for XML-based RPC)的基础上进行了改进,引入了许多新特性以提升开发者的体验和效率。 **JAX-WS 2.0 的核心概念:** 1. **服务端点接口(SEI, ...
基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...
**JAX-WS2.1用户指南** JAX-WS(Java API for XML Web Services)是Java平台上用于创建Web服务的标准API,版本2.1是其一个重要里程碑。本指南将深入探讨JAX-WS 2.1的核心概念、功能以及如何在实际开发中应用它。...
标题中的“一个包含jax-ws和jax-rs的例子(含服务端和客户端)”是指这是一个示例项目,它演示了如何使用Java API for XML Web Services (JAX-WS)和Java API for RESTful Web Services (JAX-RS)来创建和消费Web服务。...
【标题】:Web服务之Java API for XML Web Services (JAX-WS) 【内容详解】 JAX-WS,全称为Java API for XML Web Services,是Java平台上的一个标准,用于构建和部署基于SOAP(Simple Object Access Protocol)的...
JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...
**JAX-WS API** Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更...
在这个场景中,我们将深入探讨如何使用JDK 1.6及以上版本内置的JAX-WS来发布Web服务。 一、JAX-WS基础 1. **定义服务接口**:在JAX-WS中,我们首先定义一个Java接口,该接口声明了Web服务提供的操作。这些接口方法...
通过阅读该文档,读者可以更好地理解JAX-WS如何将Java接口映射到SOAP消息,以及如何发布和调用Web服务。 总结来说,JAX-WS规范为Java开发者提供了强大的Web服务开发工具,使得创建和使用Web服务变得更为简便。通过...
【标题】"metro-jax-ws-jaxws221x.zip" 提供的是一个关于JAX-WS(Java API for XML Web Services)的开发示例,其中包含了JAX-WS 2.2.1版本的相关组件和库文件。这个压缩包是针对Java开发者设计的,用于帮助他们理解...
JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式...
**标签:“jax-ws2.1”**表明这个压缩包与JAX-WS 2.1规范相关,该规范发布于2006年,是JAX-WS的早期版本,相对于后续的2.2及更高版本,可能会缺少一些特性或改进,但仍然广泛应用于许多现有的Java EE项目中。...
使用JAX-WS(JWS)发布WebService 使用myeclipse开发java的webservice的两种方式 方式一: (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在...