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