Java6 WebService客戶端封裝

在開發WebService客戶端應用的時候,面臨的最大挑戰是事先不知道服務端要部署在哪裏,端口是什麼,所以Hello World的例子並不適合生產環境,還須要進一步的作改進。
 
改進的整體思想是將靜態的部分替換爲動態的,也就是說,將服務的ip和端口,作成動態參數,而後根據服務端的部署靈活改變這些配置參數。
 
下面針對前面的例子對客戶端作一個改進。
 
一、寫WebService服務的配置參數文件
 
wscfg.properties
#Java6WS服務的配置
Java6WS.wsip=192.168.14.117
Java6WS.wsport=8888
 
二、寫配置參數獲取工具
 
SysParamsToolkit.java
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();
        }
}
 
三、修改Java6工具生成的代碼,改靜態的IP和端口爲動態的參數。
 
這一步是最關鍵的一步,前面的都是準備工做,這一步纔是實質性的工做,首先你要找到所生成客戶端代碼的服務接口實現類,在此是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;
        }

......
 
到此,大功告成了,你的客戶端代碼具備了可配置功能了。能夠再也不擔憂服務端如何部署了。
 
運行一把看看:
相關文章
相關標籤/搜索