eclipse + JBoss 5 + EJB3開發(fā)指南(15):攔截器方法和攔截器類
posted @ 2009-06-14 11:00 銀河使者 閱讀(1933) | 評論 (0) 編輯
隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
|
JBosseclipse + JBoss 5 + EJB3開發(fā)指南(15):攔截器方法和攔截器類
摘要: EJB3可以通過攔截器對Bean方法進(jìn)行攔截和覆蓋。這有些象AOP中的around。通過AOP的around方法,可以修改被攔截方法的返回值、參數(shù)值,甚至可以取消被攔截方法的執(zhí)行。EJB3的攔截器可以用在無狀態(tài)Session Bean、有狀態(tài)Session Bean和消息驅(qū)動(dòng)Bean(MDB)的方法中。實(shí)現(xiàn)攔截器的最簡單的方法是使用攔截器方法。也就是說,只要在當(dāng)前的Bean中使用 @AroundInvoke對某個(gè)方法進(jìn)行注釋(關(guān)于攔截器的類都在javax.interceptor包中),那么這個(gè)方法就會(huì)變成攔截器方法,該攔截器方法會(huì)攔截當(dāng)前Bean中的所有方法。 閱讀全文
posted @ 2009-06-14 11:00 銀河使者 閱讀(1933) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(14):消息驅(qū)動(dòng)Bean
摘要: 在前面的文章中給出的SessionBean的例子都是同步調(diào)用SessionBean方法的,也就是說,只有當(dāng)方法中的代碼都執(zhí)行完,才能返回到客戶端。但在某些情況下,由于SessionBean方法的執(zhí)行時(shí)間比較長,這就需要異步地調(diào)用該方法,否則客戶端就需要等待比較長的時(shí)間。要實(shí)現(xiàn)異步調(diào)用,就需要使用本要講的消息驅(qū)動(dòng)Bean。消息驅(qū)動(dòng)Bean的基本原理是客戶端向消息服務(wù)器發(fā)送一條消息后,消息服務(wù)器會(huì)將該消息保存在消息隊(duì)列中。在這時(shí)消息服務(wù)器中的某個(gè)消費(fèi)者(讀取并處理消息的對象)會(huì)讀取該消息,并進(jìn)行處理。發(fā)送消息的客戶端被稱為消息生產(chǎn)者。 閱讀全文
posted @ 2009-06-08 23:40 銀河使者 閱讀(2475) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(13):在Servlet中訪問應(yīng)用程序管制EntityManager對象
摘要: 在前面的文章中使用的都是容器管制的EntityManager對象。這類EntityManager對象是由EJB容器創(chuàng)建的,在這種情況下,EntityManager對象的生命周期完全由EJB容器來管理。在SessionBean中可以使用如下的代碼來通知EJB容器創(chuàng)建 EntityManager對象:
@PersistenceContext(unitName="myentity") protected EntityManager em; 上面的代碼需要放在任意一個(gè)SessionBean的類中,EJB容器會(huì)自動(dòng)創(chuàng)建EntityManager對象。但如果要在Servlet中直接訪問 EntityManager對象,需要使用EntityManagerFactory接口的createEntityManager方法來創(chuàng)建 EntityManager對象,在使用完EntityManagerFactory和EntityManager對象后,可以使用相應(yīng)的close方方關(guān)閉這兩個(gè)對象。 閱讀全文 posted @ 2009-06-06 14:07 銀河使者 閱讀(2192) | 評論 (2) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(12):使用命名查詢執(zhí)行JPQL
摘要: 在EJB3中可以使用EntityManager對象的createQuery方法來執(zhí)行JPQL(類似于Hibernate中的HQL),這非常簡單。但使用createQuery方法處理JPQL時(shí),在每次執(zhí)行JPQL的過程中系統(tǒng)都需要對JPQL進(jìn)行分析,這在一定程度上降低了系統(tǒng)運(yùn)行時(shí)的性能。為此,EJB3提供了命名查詢的概念。命名查詢有些類型于數(shù)據(jù)庫中的存儲過程,在提交的過程中就已經(jīng)被編譯處理了。因此,在執(zhí)行效率上要高一些。 閱讀全文
posted @ 2009-06-05 10:12 銀河使者 閱讀(3032) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(11):實(shí)體Bean的連接策略(JOINED Strategy)
摘要: 本文介紹了如何使用連接策略(JOINED Strategy)對物理表進(jìn)行劃分。子表與父表共享主鍵。 閱讀全文
posted @ 2009-06-04 15:31 銀河使者 閱讀(2077) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(10):通過繼承實(shí)體Bean,將單個(gè)表映射成多個(gè)表(單表策略,SINGLE_TABLE)
摘要: 如果以前使用過EJB1.x或EJB2.x的實(shí)體Bean,會(huì)發(fā)現(xiàn)無法通過繼承實(shí)體Bean將單個(gè)表分成多表。而在EJB3中,我們可以很容易地使用@Inheritance和@DiscriminatorColumn注釋來實(shí)現(xiàn)這個(gè)功能。 閱讀全文
posted @ 2009-06-03 16:22 銀河使者 閱讀(1815) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(9):實(shí)現(xiàn)Entity Bean的多對多(many-to-many)映射
摘要: 本文介紹了如何使用@ManyToMany注釋實(shí)現(xiàn)多對多的映射關(guān)系。在EJB3中多對多的映射關(guān)系需要使用一個(gè)連接表來描述。 閱讀全文
posted @ 2009-06-03 16:15 銀河使者 閱讀(1788) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(8):實(shí)現(xiàn)Entity Bean的一對多(one-to-many)映射
摘要: 本文介紹了如使用@OneToMany注釋來實(shí)現(xiàn)一對多的映射,以及使用@JoinTable注釋指定連接表來實(shí)現(xiàn)一對多的單向映射。 閱讀全文
posted @ 2009-06-03 15:27 銀河使者 閱讀(2173) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(7):實(shí)現(xiàn)Entity Bean的一對一(one-to-one)映射
摘要: 一對一映射是很常用的。在一般情況下,一個(gè)主表通過外鍵和從表形成一對一的關(guān)系。在EJB3中使用@OneToOne注釋來映射。一對一關(guān)系除了使用外鍵進(jìn)行關(guān)聯(lián)外,也可以采用共享主鍵的方式連接兩個(gè)表。 閱讀全文
posted @ 2009-06-03 10:51 銀河使者 閱讀(2144) | 評論 (1) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(6):編寫第一個(gè)實(shí)體Bean程序
摘要: EJB3容器通過EntityManager對象管理實(shí)體Bean,該類最主要的功能就是在記錄和JavaBean之間進(jìn)行互相映射。例如,我們從數(shù)據(jù)庫中查出一條記錄,這條記錄有field1和field2兩個(gè)字段,假設(shè)有一個(gè)JavaBean,也包含了field1和field2屬性。那么 EntityManager可以將這條記錄中的值映射到JavaBean的field1和field2屬性中。也就是說,在數(shù)據(jù)庫中的一條記錄就對應(yīng)于一個(gè)JavaBean的對象實(shí)例。下面將給出一個(gè)簡單的例子來演示如何來實(shí)現(xiàn)一個(gè)應(yīng)用實(shí)體Bean的程序。在這個(gè)例子中使用無狀態(tài)的session bean通過EntityManager對象從數(shù)據(jù)表中查找一條記錄,將該記錄映射成實(shí)體Bean的對象實(shí)例,最后通過session bean的方法返回該記錄的某個(gè)字段值。 閱讀全文
posted @ 2009-05-29 22:02 銀河使者 閱讀(2592) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(5):使用配置文件發(fā)布Session Bean
摘要: Session Bean除了可以使用注釋來發(fā)布外,也可以使用相應(yīng)的配置文件來發(fā)布。在這種情況下,就不需要在接口和Session Bean中使用注釋了。在JBoss中需要兩個(gè)文件對Session bean進(jìn)行配置。這兩個(gè)文件是ejb-jar.xml和jboss.xml。這兩個(gè)文件應(yīng)該META-INF目錄中,該目錄應(yīng)該放在jar文件的根目錄。ejb-jar.xml文件負(fù)責(zé)配置session bean, 閱讀全文
posted @ 2009-05-27 11:03 銀河使者 閱讀(3237) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(4):Session Bean中的注釋方法
摘要: 有時(shí)需要在Session Bean中初始化和釋放一些資源。這些工作應(yīng)該在SessionBean的@PostConstruct和@PreDestroy方法中進(jìn)行。其中用 @PostConstruct注釋的方法在SessionBean的構(gòu)造方法調(diào)用之后以后EJB容器在處理完一些其他工作后調(diào)用。用 @PreDestroy注釋的方法在SessionBean的對象實(shí)例被EJB容器銷毀之前調(diào)用。 閱讀全文
posted @ 2009-05-26 17:12 銀河使者 閱讀(2512) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(3):使用Session Bean的本地接口
摘要: 有時(shí)客戶端程序(如JSP、Servlet)會(huì)和EJB組件運(yùn)行在同一個(gè)JVM上,如在同一個(gè)J2EE服務(wù)器(JBoss、Weblogic等)中運(yùn)行。這時(shí)就沒必要再通過遠(yuǎn)程(remote)接口訪問Session Bean了,因?yàn)榭蛻舳撕蛃ession bean都在同一個(gè)jvm上,只需要通過本地接口(local)訪問即可。就象直接訪問本地類一樣(當(dāng)然,不能直接訪問EJB類,需要使用jndi和 local接口來獲得本地接口對象。當(dāng)然,也可以通過remote接口來訪問ejb,不過這樣會(huì)有一些性能損失。就象在同一臺機(jī)器上還通過socket進(jìn)行訪問一樣,很多性能都損耗在網(wǎng)絡(luò)上了。 閱讀全文
posted @ 2009-05-14 17:15 銀河使者 閱讀(2488) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(2):編寫有狀態(tài)的SessionBean
摘要: 編寫有狀態(tài)的(Stateful)的Session Bean也非常簡單,只需要將無狀態(tài)注釋(@Stateless)改成有狀態(tài)注釋(@Stateful)即可。如果使用Stateful Sessionbean,客戶端在使用同一個(gè)SessionBean對象實(shí)例時(shí)可以保存狀態(tài),也就是說,在多次引用該對象時(shí)實(shí)際上在服務(wù)端是使用的同一個(gè) Sessionbean的對象實(shí)例,而無狀態(tài)sessionbean使用了不同的sessionbean對象實(shí)例,因此,是無法保存狀態(tài)的。 閱讀全文
posted @ 2009-05-13 09:51 銀河使者 閱讀(2860) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發(fā)指南(1):編寫第一個(gè)無狀態(tài)的SessionBean
摘要: 本文中將編寫一個(gè)簡單的無狀態(tài)SessionBean。在發(fā)布EJB時(shí),一般需要將EJB程序以jar文件的形式進(jìn)行發(fā)布。這些jar文件將被放在
posted @ 2009-05-01 14:39 銀河使者 閱讀(5288) | 評論 (3) 編輯 |
|