2010-11-29

共用EJB - Local 篇

之前寫 jee application 都是將所有用到的 SessionBean 全部放在同一個 application ear檔案. 就會出現在 同一個 jee container 上面出現很多相同的 SessionBean 掛在不同的 ear 下面. 這樣整體吃掉的資源其實是很大的, 而且不能把一些共用的Session Bean 拉出來共用.

個人認為 jee 應該不是這樣用的. 所以, 利用一些空閒時間研究一下. 下面是我在 Jboss 下面試出來的, 寫下來自己參考.

在 Session Bean 部份的寫法


package test;

import javax.ejb.Stateless;

@Stateless(name="test/TestSessionBean")
public class TestSessionBean implements TestSessionBeanLocal {

@Override
public void test() {
System.out.println("Hello Test Bean");
}

}


引用 共用 SessionBean 的寫法


package test;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import test.TestSessionBeanLocal;


@Stateless
public class TestBean implements TestBeanLocal {

@EJB(mappedName = "test/TestSessionBean/local")
TestSessionBean testBean;

@Override
public void testBean() {
testBean.test();
}
}



上面標注紅色字體部份, 就是在jboss 下面可以正常運做的 code.
主要在 引用共用session bean 那邊的設定, 需要多加一個 /local , 這是從 jboss jndi tree view 看得. 或許有其他寫法, 但是我還沒有研究出來.