0

Bean 内でスケジュールされた JDBC ジョブを実行したいと考えていました。

そして、私は得ました。

Internal Exception: java.sql.SQLException: Error in allocating a connection.
Cause: java.lang.IllegalStateException: Local transaction already has 1 non-XA Resource:
cannot add more resources.
Error Code: 0
@LocalBean @Stateless
class MyBean {

    public void doJPA() {
    }

    @Schedule
    public void doJDBC() {
    }

    @PersistentContext
    EntityManager entityManager;

    @Resource
    DataSource dataSource;
}

私は何か悪いことをしましたか?

豆を分割するだけですか?

ありがとうございました。

4

1 に答える 1

1

JPA が使用しているものと同じ DataSource を使用する場合、サーバーは同じ接続を提供する必要があるため、このエラーは発生しません。別のデータ ソースを使用していますか?

unwrap() を使用して、EntityManager から JDBC 接続を取得することもできます。

http://wiki.eclipse.org/EclipseLink/Examples/JPA/EMAPI#Getting_a_JDBC_Connection_from_an_EntityManagerを参照して ください。

于 2012-05-30T14:39:02.013 に答える