spring注入多个远程sessionbean,调用其多个方法,如何控制事务
结构如图所示,
ejb容器中,单个session,我可以用容器管理事务。但现在将session注入到客户端spring管理的普通bean中,在该普通bean的方法中,调用多个sessionbean的多个方法,我如何控制事务。
求教各位大牛,完成后追加50分。
我无法将在不同机器上的多个session bean注入到本地的session bean中(在图中,session bean3和session bean 4注入到sessionbean1中),该怎么处理能顺利注入?
远程Ejb一般只能通过lookup获得吧。。。我之前的意思是你可以将服务器c中的sessionbean1和sessionbean2组合到一个新的sessionbean0中(sessionbean0仍然部署在服务器c中,sessionbean0的操作与你现在在action中的操作相同) ,然后你在action中调用sessionbean0,这样action就只调用一个sessionbean了。
另外,这种情况下,肯定会涉及到分布式事务,我使用的是<datasources>
<xa-datasource>类型的数据源,在不同机器上分别放置了oracle-xa-ds.xml,但事务并不起作用。
我想知道,这几台服务器上的数据源文件是不是应该一模一样?具体怎么配置?
再把我的oracle-xa-ds.xml附上:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<xa-datasource>
<jndi-name>MyOracleDS</jndi-name>
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<!--服务器249 -->
<xa-datasource-property name="URL">jdbc:oracle:thin:@192.168.24.249:1521:ORCL</xa-datasource-property>
<xa-datasource-property name="User">gxpt1</xa-datasource-property>
<xa-datasource-property name="Password">gxpt1</xa-datasource-property>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<no-tx-separate-pools/>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</xa-datasource>
<xa-datasource>
<jndi-name>JcOracleDS</jndi-name>
<isSameRM-override-value>false</isSameRM-override-value>
<!--服务器252 -->
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@192.168.24.252:1521:ORCL</xa-datasource-property>
<xa-datasource-property name="User">gxpt1</xa-datasource-property>
<xa-datasource-property name="Password">gxpt1</xa-datasource-property>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<no-tx-separate-pools/>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</xa-datasource>
<mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter"
name="jboss.jca:service=OracleXAExceptionFormatter">
<depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
</mbean>
</datasources>