web服务

author:何桂坤

--------services.xml文件-------------------

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
  <name>weatherService</name>
  <serviceClass>ch09.server.Iweather</serviceClass>
  <implementationClass>ch09.server.WeatherImpl</implementationClass>
  <scope>application</scope>

</service>
<service>
  <name>weekWork</name>
  <serviceClass>ch09.server.IweekWork</serviceClass>
  <implementationClass>ch09.server.weekWorkImpl</implementationClass>
  <scope>application</scope>
  
</service>
 
<!-- 配置文件解析
  <service>
        当前服务的名称(为客户端使用)比如要测试次文件时 就以这个名为访问名
    <name>CreditCard</name>
        指定服务的名称空间有银行(提供商)提供
    <namespace>www.jbaptech.com.cn/CreditCard</namespace>
        为name元素绑定的class类 如果是接口就要下一元素指定接口的实现类
    <serviceClass>y2javaee.sg.ch09.IProcessCredit</serviceClass>
        接口的实现类
    <implementationClass>y2javaee.sg.ch09.ProcessCredit</implementationClass>
  </service>
 -->
  
</beans>

-----------------------服务接口--------------------------

package ch09.server;

import java.util.Random;

public class WeatherImpl implements Iweather {
//实现随机数接口的类 返回1-15的随机数
 public int getRandom() {
  Random rand=new Random();
  int radom=rand.nextInt(16);//产生1~16的整数nextInt(100)时返回0-99
  return radom;
 }

}

----------------------------客户端调用-------------------------

package ch09.client;

import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import ch09.server.Iweather;
//天气的客户端类
public class WeatherClient {
public int ramGain() {
   int result=-1;//代表运行本方法出错时的默认值
 
   //创建天气预报web服务的元数据  
                   //实例化对象服务工厂并调用它的Crete方法传入参数(接口类) 获得服务的元数据
   Service srvcModel=new ObjectServiceFactory().create(Iweather.class);//括号里面获得接口(类)
 
   //创建天气预报web服务的代理
                   //实例化XFire的代理工厂XFireProxyFactory(XFireFactory.newInstance()获得xFire库的实例,getXFire()通过内部方法获得库)
   XFireProxyFactory  factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
 
   //创建天气预报web服务的地址(这里写的是本机)
    /*(http://localhost:8080/restranthgk/services/weatherService?wsdl)利用此地址测试是否成功
    * services/*为web.xml配置文件拦截下来访问的路径  weatherService为 services.xml里面的名
    * 路径对应正确才能成功  每次更改配置文件时都要重启tomcat 否则还是运行原来的代码
    */
   String helloWorldURL="http://localhost:8080/restranthgk/services/weatherService";
  
   try {
  //生成天气预报web服务调用对象
                //(强制把object类型转换为接口类型)通过代理工厂factory.create(元数据,服务URL)
    Iweather iClient=(Iweather)factory.create(srvcModel,helloWorldURL);
  //获得0-15的随机整数
    result=iClient.getRandom();//通过接口调用方法获得随机数
 } catch (Exception e) {
 
 }
  return result;//返回
}
//显示天气最终的状况
public  String showWeather() {
  int weatherNum=this.ramGain();//调用上面的方法
  String todayWeather="";
  switch (weatherNum) {
  case 0:
   todayWeather="晴";
   break;
  case 1:
   todayWeather="晴到多云";
   break;
  case 2:
   todayWeather="多云";
   break;
  case 3:
   todayWeather="阵雨";
   break;
  case 4:
   todayWeather="中雨";
   break;
  case 5:
   todayWeather="大雨";
   break;
  case 6:
   todayWeather="大到暴雨";
   break;
  case 7:
   todayWeather="雷阵雨";
   break;
  case 8:
   todayWeather="雨夹雪";
   break;
  case 9:
   todayWeather="小雪";
   break;
  case 10:
   todayWeather="中雪";
   break;
  case 11:
   todayWeather="大到暴雪";
   break;
  case 12:
   todayWeather="冰雹";
   break;
  case 13:
   todayWeather="霜冻";
   break;
  case 14:
   todayWeather="雾";
   break;
  case 15:
   todayWeather="阴";
   break;
  default:
   todayWeather="预测不到,可能因为调用天气的API出错了";
   break;
  }
  return todayWeather;
  
  }
}
----------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heguikun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值