国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

靈活使用EJB的本地和遠程接口(四)

2019-11-18 12:34:05
字體:
來源:轉載
供稿:網友

  部署不同的體系結構
  服務器項目
  創建一個名為“TestServerTomcat”的 Tomcat 服務器項目。在此項目內,選擇 New Server and Server Configuration,輸入“ServerTomcat”作為服務器名(Server name),并且在“Apache Tomcat version 4.1”下選擇 Test Environment 作為服務器類型(Server type)。在下一個面板中,指定 TOMCAT_HOME 作為安裝 Tomcat 的目錄,并且指定適當的 JDK 位置設置。請參見圖 7。
  
 靈活使用EJB的本地和遠程接口(四)(圖一)


  
圖 7. 服務器 Tomcat 設置

  創建服務器項目“TestServerWAS”。在此項目中,創建服務器“ServerWAS”并接受所有的缺省值。(具體情況請參見 “Hello World”J2EE 應用程序文章)。
  
  最后,您的工作臺看起來應該是這樣的:
  
 靈活使用EJB的本地和遠程接口(四)(圖二)

  
圖 8. 具有所有項目的工作臺

  現在,我們可以將項目添加到服務器并測試 J2EE 應用程序。
  
  部署 All-in-One-All-Local 體系結構
  要部署這種體系結構,您需要遵循下列步驟:
  
  a.將 DualEARForAllInOne 添加到 WebSphere application Server 配置。打開服務器配置編輯器,輸入必要的設置;例如,將類路徑設置為項目文件夾。由于我們稍后將進行性能測試,所以最好同時更改某些環境設置;例如,將 java VM 參數設置為 -Xms512M -Xmx512M,禁用通用測試客戶端(universal test client)等等。
  
  b.更改某些數據源設置也是有必要的。現在,從提供者列表中刪除“Cloudscape”,并且為“Default DB2”提供者添加版本 5.0 的數據源。接受所有的缺省值,并且指定 dualDB 作為“databaseName”資源特性值。在服務器配置編輯器的 EJB 選項卡上,將缺省數據源設置為 Data source 1。
  
  c.返回到 DualEJBModule01 EJB 部署描述符編輯器。對于 DualEntity Bean,將“CMP Connection Factory JNDI name”的值設置為 jdbc/ds1,并且將“Container authorization type”設置為 Per_Connection_Factory。
  
  d.對于初始測試,確保 DualEJBModule02 的 web.xml 和 ejb-jar.xml 中的“useLocal”設置為 true。
  
  e.發布并啟動 ServerWAS。
  
  f.通過 Web 瀏覽器導航到 URL http://localhost:9080/DualWebModule03。您應該看到索引頁面,帶有顯示的表單。
  
 靈活使用EJB的本地和遠程接口(四)(圖三)

  
圖 9. 索引和結果頁面

  g.現在,您可以測試整個 J2EE 應用程序,并且在 Application Developer 中觀察控制臺消息。
  
  部署 All-in-One-All-Remote 體系結構
  部署這種體系結構不需要更改項目設置。然而,要在相同的部署(實現 All-in-One-All-Remote)中轉換到遠程接口,您需要將 DualEJBModule02 的 web.xml 和 ejb-jar.xml 中的“useLocal”設置值更改為 false。
  
  部署分離容器(Separate Containers)體系結構
  要實現這種體系結構,您需要從“ServerWAS”配置中刪除 DualEARForAllInOne 項目,并且將 DualEARForEJBContainer 添加到它,然后,將 DualWebModule03 項目添加到“ServerTomcat”配置。指示 Servlet 使用特定的 URL 來定位 EJB(通過取消 web.xml 中相關參數設置的注釋)。在 ejb-jar.xml 中將“useLocal”設置為 true,以便實現 WebSphere Application Server 中的 EJB 容器內的最快通信。在啟動服務器之前,我們必須為 Tomcat 設置環境。打開 Tomcat 服務器編輯器,選擇 Environment 選項卡以設置“Class Path”:
  
  ·添加變量:${WAS_50_PLUGINDIR}/PRoperties。
  
  ·添加文件夾:DualEJBModule02/ejbModule、DualJavaModule00。
  
  ·對于 Tomcat 類加載器,我們需要 Enterprise JavaBeans 類和接口(通常包含在 javax.ejb 包內)。對于 Tomcat,將標準的 j2ee.jar 放入類路徑可能會引起已知的不兼容性問題,因為 javax.servlet 包出現在 j2ee.jar 和 servlet.jar 這兩個文件中。避免這個問題的惟一方法是創建一個新的 j2ee-modified.jar,只包含必要的與 EJB 有關的類(通過下載的文件提供)。將此文件添加到“External JAR”選項中。
  
  ·將“Java VM Arguments”設置為 -Xms256M -Xmx256M。
  
  要啟動該應用程序,您必須首先啟動 ServerWAS,然后啟動 ServerTomcat。將瀏覽器指向 http://localhost:8080/DualWebModule03 來查看索引頁面,因為 Tomcat 使用端口 8080 作為 HTTP 的缺省端口。
  
  使用簡單的 Java HTTP 測試客戶端進行測試
  現在,我們將通過一個簡單的 Java HTTP 測試客戶端(通過下載的文件提供)來進行某些性能測試。測試客戶端測量測試的持續時間內平均的響應時間和成功的采樣數(即得到了響應的采樣數)。要啟動測試客戶端(一個帶有簡單的自解釋 GUI 的 Java 應用程序),可以運行 start.bat。該 URL 應該對將要測試的體系結構是有效地。選擇 Set,然后選擇 Start。當測試完成時,結果將顯示在帶顏色的文本區中。
  
 靈活使用EJB的本地和遠程接口(四)(圖四)

  
圖 10. 簡單的 Java HTTP 測試客戶端

  測試客戶端產生指定的線程數,每個線程都通過它自己的 URL 對象提供。該客戶端生成 HTTP GET 和 POST 請求,帶有在 init.properties 文件中定義的參數(在 client.jar 文件中提供)。id 請求參數值是由隨機數生成器計算出來的整數,而 firstName 和 lastName 請求參數是由從預定義的 String 數組挑選的元素創建的。該客戶端使用 GET 請求來在“Set”模式下測試 URL,然后它使用 POST 請求來進行實際的性能或負荷測試。每個請求都發送一個請求,再等待響應,然后發送另一個請求到服務器,如此等等。測試結果將在下一部分進行討論。別忘了在啟動測試之前禁用 web.xml 和 ejb-jar.xml 中的跟蹤!
  
  性能測試結果及分析
  測試設置
  與開發人員的機器中的典型環境相比,測試設置中并沒有什么非凡之處。我們用于測試的計算機的配置為 Intel Pentium III 處理器、1 GHz 和 1.5GB 的 RAM、windows 2000、DB2 V8.1、WebSphere Studio Application Developer Version 5.1、Tomcat 4.1.29 和 IBM JDK 1.3.1(帶有已啟用的 JIT)。因此,為了進行測試設置,所有的服務和應用程序都應該已運行在相同的單處理器計算機中。
  
  我們所進行的測試有兩種類型:單線程和多線程(上述體系結構中的每一個都有 100 個線程)。為了獲取可復驗的結果,每種測試設置在客戶端上都有一系列運行。在這些系列中第一次運行的結果被認為沒有代表性,運行測試以使 JVM 和服務器“預熱”。在每次測試運行之后便刪除數據庫 PERSON 表中的所有記錄。單次測試運行一般持續的時間通常為 10 分鐘。對于分離容器(Separate Containers)體系結構,為了進行多線程測試,Tomcat 的 server.xml 中的設置需要作如下調整:
  ...
  <Connector acceptCount="10"
   className="org.apache.coyote.tomcat4.CoyoteConnector"
   connectionTimeout="20000"
   debug="0" enableLookups="false"
   maXProcessors="200" minProcessors="200"
   port="8080" redirectPort="8443"
   useURIValidationHack="false"/>...
  
  不需要進行重要的數據庫或服務器調整。
  
  結果
  實際的測試結果顯示在下表中。重要的是相對數而不是絕對數本身。一般來說,本地和遠程接口的性能結果與預覽有很好的一致性。(同時參見參考資料。)在我們的測試中,多線程吞吐量一般要低一些,因為每個 JVM 都必須在相同的單處理器計算機中分派多線程。對于這個樣本應用程序,請求處理時間比較少,所以線程分派和時間安排相當大程度上是在整個處理時間中共享的,因而增加了響應時間。
  
 靈活使用EJB的本地和遠程接口(四)(圖五)

  
圖 11. 單線程客戶端的平均響應時間

  
 靈活使用EJB的本地和遠程接口(四)(圖六)

  
圖 12. 多線程客戶端的平均響應時間

  
 靈活使用EJB的本地和遠程接口(四)(圖七)

  
圖 13. 單線程客戶端的吞吐量

  
靈活使用EJB的本地和遠程接口(四)(圖八)

  
圖 14. 多線程客戶端的吞吐量

  結束語
  本文展示了樣本 J2EE 應用程序的設計方法、實現和測試結果,提供了 Enterprise Java Bean 的本地和遠程接口使用的基本比較。公開 EJB 的本地和遠程接口并不會限制 J2EE 應用程序部署中的靈活性。這兩種接口使您可以改變部署場景而不用更改應用程序的源代碼,并且還使您可以利用所選的任何部署體系結構。當本地接口用在相同的 JVM 中時,性能是最優的。使用分離容器(Separate Containers)體系結構性能可能會降低。對于確定的 J2EE 設計模式,我們推薦通過創建處理本地和遠程接口的代碼來將兩種接口同時用于會話 Bean(有時用于實體 Bean),以達到最大的效率,而進行很少的額外工作。
  
  關于作者 Sheldon Wosnick 是 IBM 多倫多實驗室的 WebSphere Studio Application Developer Server Tools 小組中的一名顧問軟件開發人員。他和他的隊員們負責 WebSphere Studio 產品家族的整個服

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闸北区| 丽水市| 博客| 精河县| 奉贤区| 梁山县| 色达县| 水富县| 婺源县| 潼南县| 南安市| 金阳县| 墨脱县| 虹口区| 海淀区| 大同市| 肥西县| 肃南| 乌什县| 大埔区| 洛阳市| 玛纳斯县| 垣曲县| 靖西县| 会昌县| 嵩明县| 茂名市| 扬中市| 荔浦县| 藁城市| 寻甸| 东海县| 五大连池市| 西和县| 天津市| 乐都县| 巨鹿县| 菏泽市| 榆中县| 四子王旗| 新竹市|