[Java lista] EJB2 -> Spring
Zsombor
gzsombor at gmail.com
2009. Nov. 26., Cs, 08:42:09 CET
2009/11/23 Böszörményi Péter <zmblevlist at gmail.com>
> Esetleg egy roviden ossze tudod foglalni, hogy mikent oldottad meg a
> dolgokat (beanek, konfiguraciok, illeszto osztalyok), az archivum kedveert.
>
>
Igen, persze. A bemenet az egy SessionBean implementáció, azt bewrappeljük
egy saját proxyval, ami a local/remote interfészt implementálja, s ezt az
egĂ©szt pedig spring segĂtsĂ©gĂ©vel tovább csomagoljuk tranzakciĂł kezelĹ‘
proxyval.
Kezdeném a konfigurációs fájllal :
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"> </..>
<!-- tranzakció kezelés -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- ez a bean mondja meg, hogy melyik osztályt kell tranzakciósan kezelni.
Lényegében minden olyan metódust, ami egy EJBObject-et kiterjesztő
interfészen van rajta. Azaz a saját proxy objektumainkat -->
<bean id="txAttributeSource"
class="com.babjack.SessionBeanTransactionAdvisor">
</bean>
<!-- tranzakció kezelő interceptor definiciója -->
<bean id="txInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="txManager"/>
<property name="transactionAttributeSources"
ref="txAttributeSource"/>
</bean>
<bean id="txAdvisor"
class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="txInterceptor"/>
</bean>
<bean id="txProxyCreator"
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
</bean>
<!-- ejb definiciĂłk, az EJB2Factory meg egy springes FactoryBean, ami a
bejövő sessionBean-t bewrappeli egy java.lang.ref.Proxy objektummal, ami
implementálja a com.kamu.ize.IzeSB interfészt -->
<bean id="izeBean" class="com.babjack.EJB2Factory">
<property name="sessionInterface" value="com.kamu.ize.IzeSB"/>
<property name="sessionBean"><bean
class="com.kamu.ize.IzeSessionBeanImpl"></bean></property>
</bean>
<!-- JNDI beállĂtás, ez a felkonfigurált datasourcet elrejti a JNDI-ban -->
<bean id="jndiSetup" class="com.babjack.JNDISetup" lazy-init="false">
<property name="initialValues">
<util:map>
<entry key="java:comp/env/jdbc/dbpool"
value-ref="dataSource" />
</util:map>
</property>
</bean>
Ezek után ez a hĂvás mĂĽködött :
IzeSB sb = ctx.getBean("izeBean");
sb.doStuff("valami");
Ahol a doStuff implementációja az IzeSessionBeanImpl-ben az adatbázishoz
nyúlt, amit a JNDI-ból szedett ki,s rendben tevékenykedett.
A home interfĂ©sz megvalĂłsĂtásáig nem jutottam el, a működĹ‘ prototipushoz már
nem volt szükségem rá, de az már nagyon egyszerű lett volna.
Ha másnak is vannak hasonlĂłan perverz ötletei, vagy kĂ©rdĂ©sei, kĂváncsian
várom :)
ĂĽdv
Zsombor
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20091126/c5212c9d/attachment.html
További információk a(z) Javalist levelezőlistáról