1)管理虛擬化:有形的組織型管理和虛擬的IT流程管理相結合管理模式;
2)制造虛擬化:由生產線工人和由程序控制的機器人相結合的生產模式;
3)渠道虛擬化:由實體銷售店和虛擬的網上銷售相結合的渠道管理模式;
4)服務虛擬化:實體保養維修和遠程診斷,軟件更新相結合的服務模式;
5)組織虛擬化:垂直的組織機構和橫向的項目型組織機構相結合的企業組織模式。
2009年12月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();
}
此時,需注意,在主線程執行時,需等待子線程執行,否則,當主線程結束后,子線程也將結束。
需求:
系統A與系統B分別部署在不同域的兩臺服務器中,但它們的身份都統一在身份認證服務器中;身份認證信息以Session方式存貯于各自系統中,并輔以cookie進行使用。
當用戶在A系統登錄后,訪問B系統時,由于是跨域訪問,導致身份信息不能正確的傳遞到B系統中,從而致使用戶需在B系統中重新登錄。
解決方案:
處理這類跨域訪問時,我們最先使用從B系統向C通過HttpRequest(類AJAX請求)的方式獲取身份信息,此方式好處是同步處理,方便用使用;但其限制諸多,如需設置信任站點、用戶訪問確認等,甚至,在對應用服務器作了一次安全升級后,根本無法訪問了。因此,需另行開辟途徑,于是,在同事建議下,我們使用IFrame內嵌跨域驗證網頁,來解決此問題。
1、原理設計:用戶在訪問B系統時,先使用一內置的iframe,并將iframe的src指向身份認證服務器系統代理驗證接口;如果用戶已經在A系統中進行過登錄,即A域了中已存在著身份認證信息后,身份認證服務器中也將具有其身份信息將其附帶著身份認證信息后重定向訪問B系統代理接口;B系統代理驗證接口在接收到由A系統傳遞而來的身份認證信息后,通過身份認證服務器驗證后,在B系統所在域重建身份認證信息。
2、實現邏輯貼碼:
1)B系統代理驗證接口:
(1)IFrame邏輯貼碼:
(2)JS檢測是否通過認證邏輯貼碼:
2)身份認證服務器端接口(JSP):
3、注意事項:
1)由于身份認證中心使用cookie作為身份標識,因此,需要用戶在瀏覽器中允許使用cookie的設置;
2)由于在iframe中進行跨域重定向,因此需在IE安全中的跨域瀏覽子框架項設為啟用:
4、源碼文件:
……
在windows下進行j2ee項目開發和部署時,常需要對系統存在問題進行更深入的分析。由此,實時的javacore就是分析的最佳方式之一。但如何以最方便直接的方式產生javacore文件,就是這項工作必需做的準備工作了。
1、通過dos窗口,進入至jdk安裝目錄下的bin目錄中;
2、運行jconsole.exe,并設置信息輸出的目標文件,以便于分析,否則將直接輸出至屏幕上;
3、連接正在運行的目標jvm;
4、連接后的jconsole如下:
5、通過通過Ctrl+Break組合鍵,產生javacore至指定文件中。
6、下一步就是對所產生的javacore文件進行具體的分析和使用了。