程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java6 WebService客戶端封裝

Java6 WebService客戶端封裝

編輯:關於JAVA

改進的總體思想是將靜態的部分替換為動態的,也就是說,將服務的ip和端口,做成動態參數,然後根據服務端的部署靈活改變這些配置參數。

下面針對前面的例子對客戶端做一個改進。

1、寫WebService服務的配置參數文件

wscfg.properties

#Java6WS服務的配置

Java6WS.wsip=192.168.14.117

Java6WS.wsport=8888

2、寫配置參數獲取工具

SysParamsToolkit.java

package lavasoft.common;
import java.io.IOException;
import java.util.Properties;
/**
* 媒資系統配置文件參數獲取工具
*
* @author leizhimin 2009-11-16 15:21:22
*/
public final class SysParamsToolkit {
         private static Properties prop;
         private SysParamsToolkit() {
         }
         static {
                 reload();
         }
         public static boolean reload() {
                 boolean flag = true;
                 prop = new Properties();
                 try {
                         prop.load(SysParamsToolkit.class.getResourceAsStream("/wscfg.properties"));
                         flag = false;
                 } catch (IOException e) {
                         e.printStackTrace();
                 }
                 return flag;
         }
         public static Properties getSysProperties() {
                 return prop;
         }
         /**
          * 獲取指定的系統屬性值
          *
          * @param key 指定的屬性名稱
          * @return 指定的系統屬性值
          */
         public static String getProperty(String key) {
                 return prop.getProperty(key);
         }
         /**
          * 獲取指定的系統屬性值
          *
          * @param key                指定的屬性名稱
          * @param defaultVal 默認值
          * @return 指定的系統屬性值
          */
         public static String getProperty(String key, String defaultVal) {
                 return prop.getProperty(key, defaultVal);
         }
         public static void main(String[] args) {
                 Properties prop = getSysProperties();
         }
}

3、修改Java6工具生成的代碼,改靜態的IP和端口為動態的參數。

這一步是最關鍵的一步,前面的都是准備工作,這一步才是實質性的工作,首先你要找到所生成客戶端代碼的服務接口實現類,在此是Java6WSService類。

@WebServiceClient(name = "Java6WSService", targetNamespace = "http://server.lavasoft/", wsdlLocation = "http://192.168.14.117:8080/java6ws/Java6WS?wsdl") 
public class Java6WSService
                 extends Service {
         private final static URL JAVA6WSSERVICE_WSDL_LOCATION;
         private final static Logger logger = Logger.getLogger(lavasoft.wsclient.Java6WSService.class.getName());
         static {
                 String wsip = SysParamsToolkit.getProperty("wsip", "192.168.14.117");
                 String wsport = SysParamsToolkit.getProperty("wsport", "8888");
                 URL url = null;
                 try {
                         URL baseUrl;
                         baseUrl = lavasoft.wsclient.Java6WSService.class.getResource(".");
                         url = new URL(baseUrl, "http://" + wsip + ":" + wsport + "/java6ws/Java6WS?wsdl");
                 } catch (MalformedURLException e) {
                         logger.warning("Failed to create URL for the wsdl Location: '"+"http://" + wsip + ":" + wsport + "/java6ws/Java6WS?wsdl"+"', retrying as a local file");
                         logger.warning(e.getMessage());
                 }
                 JAVA6WSSERVICE_WSDL_LOCATION = url;
         }
......

到此,大功告成了,你的客戶端代碼具有了可配置功能了。可以不再擔心服務端如何部署了。

運行一把看看:

由於客戶端生成的代碼超多,不能一一貼出,也沒必要,詳細源碼請查看附件。

出處:http://lavasoft.blog.51cto.com/62575/228026

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved