J2EE入門(4) (轉)
建立TM應用客戶端
J2EE應用程式客戶端由TM語言編寫,在執行的時候,客戶端程式和J2EE SERVER在不同的虛擬機器(VM)中
在這個例子中,J2EE應用程式客戶端需要兩個不同的JAR.第一個JAR檔案是客戶端的J2EE.這個JAR檔案包含客戶端的deployment descriptor和它的類檔案.當你執行New Application Client wizard,
deploytool
自動建立JAR檔案然後把它存到應用程式的EAR檔案中. 由J2EE規範定義的JAR檔案可以方便的跨越所有相容J2EE的.第二個JAR檔案包含客戶端程式執行時必需的stub類.這些stub類使客戶端可以訪問執行在J2EE server上的enterprise beans. Because this second JAR file is not covered by the J2EE Specifications, it is implementation-specific, intended only for the J2EE SDK.
J2EE應用程式客戶端在
examples/src//converter/ConverterClient.java
中.在這個章節中,你已經把它隨同enterprise bean程式碼一起編譯, .編寫J2EE應用程式客戶端
ConverterClient.java
原始碼說明了enterprise bean的客戶端執行的基本任務:
- 定位home interface
- 建立enterprise bean例項
- 商務方法
定位Home Interface
ConverterHome
介面定義象create
一樣具有生命週期的方法.在ConverterClient
能呼叫create
方法之前,它必須例示(instantiate)ConverterHome
型別的. 它分為3步處理:
- 建立JNDI naming context.
Context initial = new InitialContext();
- 取得繫結到
ejb/SimpleConverter
的物件.obf = initial.lookup ("java:comp/env/ejb/SimpleConverter");
- Narrow the reference to a
ConverterHome
object.ConverterHome home = (ConverterHome) PortableRemoteObject.narrow(objref, ConverterHome.class);
建立一個Enterprise Bean例項
要建立bean例項,客戶端呼叫
ConverterHome
中的create
方法並且返回一個Converter
型別的物件.Converter
介面定義客戶端可以呼叫的在bean中的商務方法.當客戶端呼叫create
方法時,EJB容器例示(instantiates)bean然後呼叫ConverterBean.ejbCreate
方法. 客戶端呼叫create
方法如下所示:Converter currencyConverter = home.create();
呼叫商務方法
呼叫一個商務方法非常容易--你只是呼叫
Converter
物件上的方法。EJB容器將在執行於服務端的ConverterEJB
例項上呼叫相應的方法. 下面一行程式碼是客戶端呼叫dollarToYen
上的商務方法.double amount = currencyConverter.dollarToYen(100.00);
ConverterClient原始碼
完整的
ConverterClient
原始碼如下.import javax.naming.Context; import javax.naming.InitialContext; import javax..PortableRemoteObject; import Converter; import ConverterHome; public class ConverterClient { public static void main(String[] args) { try { Context initial = new InitialContext(); Object objref = initial.lookup ("java:comp/env/ejb/SimpleConverter"); ConverterHome home = (ConverterHome)PortableRemoteObject.narrow( objref, ConverterHome.class); Converter currencyConverter = home.create(); double amount = currencyConverter.dollarToYen(100.00); System.out.println(String.valueOf(amount)); amount = currencyConverter.yenToEuro(100.00); System.out.println(String.valueOf(amount)); currencyConverter.remove(); } catch (Exception ex) { System.err.println("Caught an unexpected exception!"); ex.printStackTrace(); } } }
編譯應用程式客戶端
應用程式客戶端檔案和enterprise bean檔案同時被編譯,可參考中所述.
打包J2EE應用程式客戶端
打包應用程式客戶端元件, 你需要執行
deploytool
的New Application Client Wizard. 在這個過程中, 嚮導把客戶端檔案編譯成一個JAR檔案然後把這個JAR檔案加到應用程式的ConverterApp.ear
檔案中.啟動New Application Client Wizard,選擇File->New Application Client. 嚮導顯示下面的對話方塊.
- Introduction對話方塊:
- 閱讀關於嚮導特性概覽的說明.
- 單擊 Next.
- JAR File Contents對話方塊
- 在這個組合框中,選擇 ConverterApp.
- 單擊 Edit.
- 在Available Files目錄樹中, 定位到
examples/build/ejb/converter
目錄.- 選擇ConverterClient.class file檔案然後單擊Add.
- 單擊 OK.
- 單擊 Next.
- 常規對話方塊:
- 在Main Class組合框,選擇 ConverterClient.
- 檢驗Display Name欄的內容是ConverterClient.
- 在Callback Handler Class組合框,選擇 container-managed authentication.
- 單擊 Next.
- 單擊 Finish.
指定應用程式客戶端的Enterprise Bean Reference
當呼叫
lookup
方法時,ConverterClient引用一個enterprise bean:Object objref = initial.lookup ("java:comp/env/ejb/SimpleConverter");
如下指定reference:
- 在樹目錄中,選擇ConverterClient.
- 選擇EJB Ref's tab.
- 單擊 Add.
- 在Coded Name列輸入
ejb/SimpleConverter
.- 在Type列,選擇 Session.
- 在Interfaces列,選擇Remote.
- 在Home列輸入
ConverterHome
.- 在Remote列輸入
Converter
.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1001102/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- J2EE入門(8) (轉)
- J2EE入門(10) (轉)
- J2EE入門(11) (轉)
- J2EE入門(9) (轉)
- J2EE入門(1) (轉)
- J2EE入門(2) (轉)
- J2EE入門(3) (轉)
- J2EE入門(5) (轉)
- J2EE入門(6) (轉)
- J2EE入門(7) (轉)
- JDBCTM 指南:入門4 - Statement (轉)JDBC
- log4j入門(轉)
- JUnit 4快速入門(轉載)
- XML入門指南(4)XML元素(轉)XML
- java J2EE學習入門Java
- Tomcat 4/JSP入門指南(轉)TomcatJS
- Python程式設計入門(4) (轉)Python程式設計
- webpack 4 入門Web
- A Look Inside J2EE Patterns(4) (轉)IDE
- 請教:學習J2EE該如何入門
- webpack4入門Web
- 入門1~4:A系列
- Log4J入門教程(一) 入門例程
- linux新手入門――shell入門(轉)Linux
- 【轉】Zookeeper入門
- Emacs入門(轉)Mac
- iptables 入門(轉)
- CSS入門(轉)CSS
- JUnit4小白入門
- PyShark入門(4):packet物件物件
- 入門1~4:B系列
- 入門1~4:C系列
- 入門1~4:D系列
- 入門1~4:E系列
- 入門1~4:F系列
- 入門1~4:G系列
- 入門1~4:H系列
- 入門1~4:I系列