天天看點

EJB3使用小記

這陣子在項目裡面用EJB3做一個資料同步的功能,在開發過程中那個遇到幾個技術點,簡單記錄下。

1.因為資料量有點大(>百萬使用者),是以必須循環擷取記錄,平衡下來,每次取數1k-3k之間,同時取數和對傳回的更新都需要記錄狀态,為了單條記錄錯誤不影響整個流程,是以取消了整個方法的事務,僅控制在單個操作。簡單的辦法如下:

@Stateless(name="XXXService")

@Local(IXXXService.class)

@TransactionManagement(TransactionManagementType.CONTAINER)

public class XXXService implements IXXXService{

@Override

@TransactionAttribute(TransactionManagementType.NOT_SUPPORTED}

public void sync(){

//doing

}

}

2.項目裡的架構師規劃,我們web工程和ear工程分離,有許多的包,最後根據需要組合幾個包打成一個ear包。雖然全部是local的bean,但是難免還是有需要lookup一個EJB的時候,通常需要加一個ear的包名,而整個包名當然是個問題咯,不過架構師Roy随手就丢給我一句anotation搞定了,在增加了一個jndi之後,并不影響原來查找方式:

@LocalBinding(jndiBinding = "ejb/XXXService")