1)管理虛擬化:有形的組織型管理和虛擬的IT流程管理相結合管理模式;
2)制造虛擬化:由生產線工人和由程序控制的機器人相結合的生產模式;
3)渠道虛擬化:由實體銷售店和虛擬的網上銷售相結合的渠道管理模式;
4)服務虛擬化:實體保養維修和遠程診斷,軟件更新相結合的服務模式;
5)組織虛擬化:垂直的組織機構和橫向的項目型組織機構相結合的企業組織模式。
2010年3月10日 #
@echo off
echo set sh=WScript.CreateObject("WScript.Shell") >telnet_tmp.vbs
echo WScript.Sleep 3000 >>telnet_tmp.vbs
rem ----------------UNIX IPAddress
echo sh.SendKeys "open 10.0.18.100{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep 3000 >>telnet_tmp.vbs
rem ----------------userID
echo sh.SendKeys "root{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep 3000 >>telnet_tmp.vbs
rem ----------------password
echo sh.SendKeys "root{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep 3000 >>telnet_tmp.vbs
echo sh.SendKeys "ls {ENTER}">>telnet_tmp.vbs
start telnet
cscript //nologo telnet_tmp.vbs
rem del telnet_tmp.vbs
很久沒有動手寫WebService了,這次,借項目間隙,對系統進行一個小改造,將一部分功能使用WS進行封裝,為下一步異構系統集成打下基礎。
但在WS化時,由于日久生疏,一個小小的WS化變動,卻花了整整好幾天時間!為此,狠下以來,將其過程進行記錄,以便下次參考。
WS整體流程:
以下分別介紹:
1、設計和實現WebService服務端功能組件,用于統一處理針對本應用系統所需進行WebService化的邏輯實現。并將系統邏輯處理中的對象轉成序列化后的String對象,以符合WebService交互標準。
2、根據SBPApi.java,生成WSDL等:通過Eclipse右鍵菜單中的WebService-->Create Web Service項。完成后,會在web目錄下建立wsdl目錄和SBPApi.wsdl,在WEB-INF目錄下建立(改寫)server-config.wsdd等文件,并完成對web.xml的修改。其操作流程示如下:
3、根據SBPApi.wsdl,生成WebService客戶端開發包和部署文件:
1)為不影響已有項目,可另建java Web項目;
2)將wsdl目錄復制至新項目對應的web目錄下;
3)通過eclipse已提供的webService插件(右鍵)功能,生成客戶端開發包所各文件。此時,所生成的文件與服務端對象文件結構一至。
4)調整關聯引用文件,將其調整至客戶端開發包,從而避免與服務器端的引用路徑重復而引發不便,并將服務器SDK中已有文件刪除。
5)建立客戶端的快速使用代理SBPClient.java,對WebService服務端交互工作的SBPApiSoapBindingStub.java進行客戶端封裝,并根據服務端中交互對象進行反向工程,其示例結構如下:
6)將clientApi下的所有文件打包后,加入測試項目進行測試。此時,因客戶端所使用的服務端對象未包含在WebService客戶端開發包中,因此需要將服務端對象也一同打包。
7)測試。
4、開發環境:Eclipse3.3.1.1 + JDK1.5.06 + Apache Axis version: 1.4
在一次基于多線程的編碼測試中,發現繼承Runnable接口的線程實現類在運行時并未按預計啟動多線程,經分析和比較后,找出問題所現,現將其記錄下來,以供分享。
Java中,多線程編程中的線程編寫,有兩種方式,即擴展Thread基類或繼承Runnable接口;例如:
public class T extends Thread {
public void run() {
……
}
}
public class R implements Runnable {
public void run() {
……
}
}
對于擴展Thread的實現類T,可以使用T.start()來啟動此線程;如
public static void main(String[] args) {
Thread t = new T();
t.start();
}
但對于繼承Runnable接口的實現類R,因接口中并沒有提供直接啟動線程的start()方法,只有一個線程主邏輯運行的run()方法。此時,如執行run(),會因為R.run()只是作為此線程實現類的一個方法,并未在主線程之外,啟動另一個線程,從而導致R.run()阻斷主線程繼續向下執行;并未達到多線程運行的目的。
錯誤啟動代碼如下:
public static void main(String[] args) {
R r = new R();
r.run();
}
那么,如何使用另外線程來啟動繼承Runnable接口的實現類呢?以下就是它的正確的使用方式:
public static void main(String[] args) {
R r = new R();
Thread t = new Thread(r);
t.start();
}
此時,需注意,在主線程執行時,需等待子線程執行,否則,當主線程結束后,子線程也將結束。