`
chaoyi
  • 浏览: 309204 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAX-WS 模仿天气预报发布

 
阅读更多

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);
		}

	}

}

 

效果图:

 


 

 

 

 

  • 大小: 92.7 KB
  • 大小: 62.5 KB
  • 大小: 87.2 KB
  • 大小: 42.2 KB
  • 大小: 38 KB
  • 大小: 40.1 KB
  • 大小: 22.5 KB
  • 大小: 21.8 KB
分享到:
评论

相关推荐

    JAX-WS获取天气预报wsdl

    **标题:“JAX-WS获取天气预报wsdl”** 这篇内容主要探讨了如何利用Java API for XML Web Services (JAX-WS) 来通过Web Service Description Language (WSDL) 文件获取天气预报信息。JAX-WS是Java平台上的一个标准...

    jax-rs jax-ws所需包,亲测可用

    标题"jax-rs jax-ws所需包,亲测可用"表明这个压缩包包含了用于开发Java RESTful Web服务(JAX-RS)和Java SOAP Web服务(JAX-WS)所需的库文件。这些库是Java应用程序进行Web服务交互的核心组件,确保了对HTTP协议...

    Jax-ws所需要的JAR包

    把这些JAR文件复制到Tomcat安装目录的`lib`子目录下,可以确保Tomcat在启动时加载这些依赖,从而支持JAX-WS服务的发布和执行。这一步骤对于那些没有内置JAX-WS支持的轻量级应用服务器,如Tomcat来说尤其重要。 在...

    解决weblogic部署JAX-WS需要的配置文件

    在WebLogic服务器上部署JAX-WS服务时,可能会遇到一些配置问题。JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和部署Web服务。WebLogic作为一款强大的Java EE应用服务器,支持JAX-WS...

    JAX-WS所需Jar包

    标题提到的"JAX-WS所需Jar包"是指为了在Java环境中支持JAX-WS功能,开发者需要的一组核心库。这些库包含了运行和开发JAX-WS Web服务所必需的组件。下面将逐一解释这些库的作用: 1. **jaxb-xjc.jar**: 这是Java ...

    jax-ws api jar包

    - **JAX-WS运行时环境**:Java EE应用服务器(如Tomcat、Glassfish、WildFly等)内置了JAX-WS支持,可以自动处理服务的生命周期,包括服务的发布、查找和取消发布。 4. **优势:** - **简单性**:JAX-WS使用注解...

    JAX-WS2.0 API

    JAX-WS 2.0是JAX-WS的第二个主要版本,它在JAX-RPC(Java API for XML-based RPC)的基础上进行了改进,引入了许多新特性以提升开发者的体验和效率。 **JAX-WS 2.0 的核心概念:** 1. **服务端点接口(SEI, ...

    jax-ws webservice demo

    基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...

    JAX-WS2.1用户指南

    **JAX-WS2.1用户指南** JAX-WS(Java API for XML Web Services)是Java平台上用于创建Web服务的标准API,版本2.1是其一个重要里程碑。本指南将深入探讨JAX-WS 2.1的核心概念、功能以及如何在实际开发中应用它。...

    一个包含jax-ws和jax-rs的例子(含服务端和客户端)

    标题中的“一个包含jax-ws和jax-rs的例子(含服务端和客户端)”是指这是一个示例项目,它演示了如何使用Java API for XML Web Services (JAX-WS)和Java API for RESTful Web Services (JAX-RS)来创建和消费Web服务。...

    webservice之jax-ws

    【标题】: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包

    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, JAX-RS API

    **JAX-WS API** Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更...

    jax-ws发布webservice

    在这个场景中,我们将深入探讨如何使用JDK 1.6及以上版本内置的JAX-WS来发布Web服务。 一、JAX-WS基础 1. **定义服务接口**:在JAX-WS中,我们首先定义一个Java接口,该接口声明了Web服务提供的操作。这些接口方法...

    JAX-WS规范

    通过阅读该文档,读者可以更好地理解JAX-WS如何将Java接口映射到SOAP消息,以及如何发布和调用Web服务。 总结来说,JAX-WS规范为Java开发者提供了强大的Web服务开发工具,使得创建和使用Web服务变得更为简便。通过...

    metro-jax-ws-jaxws221x.zip

    【标题】"metro-jax-ws-jaxws221x.zip" 提供的是一个关于JAX-WS(Java API for XML Web Services)的开发示例,其中包含了JAX-WS 2.2.1版本的相关组件和库文件。这个压缩包是针对Java开发者设计的,用于帮助他们理解...

    如何基于JAX-WS开发一个WebService实例

    JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式...

    jax-ws2.1.zip

    **标签:“jax-ws2.1”**表明这个压缩包与JAX-WS 2.1规范相关,该规范发布于2006年,是JAX-WS的早期版本,相对于后续的2.2及更高版本,可能会缺少一些特性或改进,但仍然广泛应用于许多现有的Java EE项目中。...

    使用JAX-WS(JWS)发布WebService

    使用JAX-WS(JWS)发布WebService 使用myeclipse开发java的webservice的两种方式 方式一: (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在...

Global site tag (gtag.js) - Google Analytics