J2EE入門(4) (轉)

gugu99發表於2008-03-18
J2EE入門(4) (轉)[@more@]

建立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步處理:

  1. 建立JNDI naming context.

    Context initial = new InitialContext();

  2. 取得繫結到ejb/SimpleConverter的物件.

    obf = initial.lookup ("java:comp/env/ejb/SimpleConverter");

  3. 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. 嚮導顯示下面的對話方塊.

  1. Introduction對話方塊:
    1. 閱讀關於嚮導特性概覽的說明.
    2. 單擊 Next.
  2. JAR File Contents對話方塊
    1. 在這個組合框中,選擇 ConverterApp.
    2. 單擊 Edit.
    3. 在Available Files目錄樹中, 定位到examples/build/ejb/converter目錄.
    4. 選擇ConverterClient.class file檔案然後單擊Add.
    5. 單擊 OK.
    6. 單擊 Next.
  3. 常規對話方塊:
    1. 在Main Class組合框,選擇 ConverterClient.
    2. 檢驗Display Name欄的內容是ConverterClient.
    3. 在Callback Handler Class組合框,選擇 container-managed authentication.
    4. 單擊 Next.
    5. 單擊 Finish.

指定應用程式客戶端的Enterprise Bean Reference

當呼叫lookup方法時,ConverterClient引用一個enterprise bean:

Object objref = initial.lookup ("java:comp/env/ejb/SimpleConverter");

如下指定reference:

  1. 在樹目錄中,選擇ConverterClient.
  2. 選擇EJB Ref's tab.
  3. 單擊 Add.
  4. 在Coded Name列輸入ejb/SimpleConverter.
  5. 在Type列,選擇 Session.
  6. 在Interfaces列,選擇Remote.
  7. 在Home列輸入ConverterHome.
  8. 在Remote列輸入Converter.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1001102/,如需轉載,請註明出處,否則將追究法律責任。