`
chaoyi
  • 浏览: 292099 次
  • 性别: 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 webservice demo

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

    JAX-WS获取天气预报wsdl

    NULL 博文链接:https://qiaolevip.iteye.com/blog/2098981

    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自学笔记

    JAX-WS自学笔记 本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL...

    使用JAX-WS(JWS)发布WebService

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

    Jax-ws所需要的JAR包

    亲测可用,Jax-ws所需要的JAR包,拷贝到tomcat安装路径的lib里,实现了webservice发布到tomcat,赞!

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht

    metro-jax-ws-master

    The Java API for XML Web Services (JAX-WS) is a Java programming language API for creating web services, particularly SOAP services. JAX-WS is one of the Java XML programming APIs. It's a part of the ...

    webService部署tomcat需要的jax-ws jar包

    webService部署tomcat需要的jax-ws 的完整jar包

    JAX-WS_WebService.rar

    JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用

    JAX-WS在Tomcat中发布服务

    JAX-WS在Tomcat中发布服务实例,同时在Handler中实现简单的授权校验。

    JAX-WS2.0 API

    JAX-WS2.0 API

    Jax-WS 简单实例

    Jax-WS的简单实例 Jax-WS的简单实例

    jax-ws webservice简单demo

    jax-ws webservice完整demo,包含所有jax-ws 2.2jar包。

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

    javax.xml.ws.Service 报错需要的包,亲测可以用,直接下载在ide里buildpath一下就可以,四个jar包 ,整合了其他的jar所以配置简单

    jax-ws 方式发布web Service 后台用Hibernate实现,前端.NET通过引用服务方式实现

    rar中包含整个项目的源码和数据库生成脚本,采用jax-ws发布Web Service服务,支持java客户端和.Net客户端调用,数据库采用oracle10g,里面有创建数据库脚本文件createTable_Oracle10g.sql,由于Hibernate映射表中会...

    JAX-WS 2.2 完整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开发的文件生成与部署相关全视频过程

    如果基于一个JAX-WS进行WebService开发,有很多教程,但是具体怎么更自动地生成一些文件,实现客户端与服务端的交互,都讲得不大清楚,为了让大家更方便地部署,我将服务端、客户端文件的生成与部署全过程以及测试...

    jax-ws发布webservice

    以jdk1.6以上自带的jax-ws来发布webservice,压缩包里包含服务端和客户端,下载导入即可启动运行测试,有疑问的话欢迎咨询哈

Global site tag (gtag.js) - Google Analytics