在
WildFly 14
我有一个
@Stateless
使用不同的连接/数据库运行两个select的bean:
InitialContext context = new InitialContext();
DataSource ds = (DataSource)context.lookup("jndi/to/db/1");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from table1"); // table1 in db 1
.........
.........
InitialContext context2 = new InitialContext();
DataSource ds2 = (DataSource)context.lookup("jndi/to/db/2");
Connection conn2 = ds2.getConnection(); // <-- here it fails
Statement stmt2 = conn2.createStatement();
ResultSet rs2 = stmt2.executeQuery("select * from table2"); // table2 in db 2
我在第二个选择中收到警告(也失败了):
ARJUNA012140: Adding multiple last resources is disallowed
根据这个
link
问题是,我正在运行一个带有两个不同数据库的事务。注意,数据源没有配置XA选项,因为在我的应用程序中没有更新用例来更新单个事务中的两个数据库。
我遇到问题的bean是只读的,它只执行两个SQL选择。
我尝试用以下方法来注释bean方法:
@TransactionAttribute(javax.ejb.TransactionAttributeType.NEVER)
但我得到了运行时错误:
WFLYEJB0063: Transaction present on server in Never call (EJB3 13.6.2.6)
为什么存在交易?如何禁用它?