這陣子在專案裡面用ejb3做乙個資料同步的功能,在開發過程中那個遇到幾個技術點,簡單記錄下。
1.因為資料量有點大(>百萬使用者),所以必須迴圈獲取記錄,平衡下來,每次取數1k-3k之間,同時取數和對返回的更新都需要記錄狀態,為了單條記錄錯誤不影響整個流程,所以取消了整個方法的事務,僅控制在單個操作。簡單的辦法如下:
@stateless(name="***service")
@local(i***service.class)
@transactionmanagement(transactionmanagementtype.container)
public class ***service implements i***service
public void sync()
}2.專案裡的架構師規劃,我們web工程和ear工程分離,有許多的包,最後根據需要組合幾個包打成乙個ear包。雖然全部是local的bean,但是難免還是有需要lookup乙個ejb的時候,通常需要加乙個ear的包名,而整個包名當然是個問題咯,不過架構師roy隨手就丟給我一句anotation搞定了,在增加了乙個jndi之後,並不影響原來查詢方式:
@localbinding(jndibinding = "ejb/***service")
EJB3 入門檔案(二)
了解基本的 session bean 與 message driven bean 撰寫方式,接下來看一些生命週期 攔截器 timer 等服務。來看看 session bean 與 message driven bean 的生命週期與回呼方法。攔截器 interceptor 攔截器可以介入方 法呼叫前...
EJB3 入門檔案(二)
了解基本的 session bean 與 message driven bean 撰寫方式,接下來看一些生命週期 攔截器 timer 等服務。來看看 session bean 與 message driven bean 的生命週期與回呼方法。攔截器 interceptor 攔截器可以介入方 法呼叫前...
EJB3與EJB2的差別
1 annotation替代了配置檔案 凡是ejb2中使用配置檔案定義的 ejb3一般都可以使用 annotations定義 當然ejb3也支援配置檔案定義 凡是ejb2通過jndi尋找的資源 呼叫容器中其他ejb 呼叫環境變數等resource資源等 都是可以依靠annotations 依賴注射機...