在 第 一個 Session Bean(單機客戶端) 中,使用InitialContext來查找Session Bean,您可以使用@EJB標示要注入Bean的屬性成員,讓EJB容器自動為您注入Bean。
以 第一個 Session Bean(單機客戶端) 中的Session Bean為例,要使用@EJB注入Bean,您的Bean不用設定mappedName屬性(在Glassfish中設定mappedName屬性會注入 失敗),所以修改一下HelloBeanImpl:
- HelloBeanImpl.java
package onlyfun.caterpillar;
import javax.ejb.Stateless;
@Stateless(name="ejb/HelloFacade")
public class HelloBeanImpl implements HelloBean {
public String doHello(String message) {
return message + "processed....";
}
}
而客戶端則使用以下的程式:
- Main.java
package onlyfun.caterpillar;
import javax.ejb.EJB;
public class Main {
@EJB
private static HelloBean hello;
public static void main(String[] args) {
String result = hello.doHello("XD...");
System.out.println(result);
}
}
在單機應用程式中要使用@EJB注入Bean,必須使用Application Client Container,可 以在命令模式下執行,這是一個小型Java EE容器,像是在你啟動的JVM外圍繞必要的Java EE資源,透過Application Client Container,會自動為您取得對應的Bean並注入應用程式之中。
以Glassfish為例,Application Client Container的啟用,可以使用Glassfish安裝目錄bin目錄中的appclient,例如您可以如下使用appclient來執行上面這個 程式,其中EJBClient.jar為您建構出來的應用程式JAR檔案:
appclient
-client EJBClient.jar
XD...processed....
XD...processed....