我有EJB bean
@Stateless
public class ClientFacadeBean implements IClient {
@PersistenceContext(unitName = "BDModel")
private EntityManager em;
@EJB(lookup = "java:global/services-1.0.5/api.ejb-1.1/ConsoleLogFacadeBean!by.api.IConsoleLog")
IConsoleLog iConsoleLog;
@Override
public Response getClients(String sessionId, ClientFilter clientFilter) {
...
iConsoleLog.writeLog(sessionId, "message", clientFilter);
...
}
}
@Stateless
public class ConsoleLogFacadeBean implements IConsoleLog {
@PersistenceContext(unitName = "BDModel")
private EntityManager em;
@Override
public void writeLog(String session, String message) {
...
}
}
我获取数据,但也会收到警告
15:59:39,701 INFO [org.jboss.jca.core.connectionmanager.listener.TxConnectionListener] (default task-14) IJ000311: Throwable from unregister connection: java.lang.IllegalStateException: IJ000152: Trying to return an unknown connection: org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7@50d81342
at org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManagerImpl.unregisterConnection(CachedConnectionManagerImpl.java:408)
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.connectionClosed(TxConnectionListener.java:645)
at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.returnHandle(BaseWrapperManagedConnection.java:596)
at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.closeHandle(BaseWrapperManagedConnection.java:541)
at org.jboss.jca.adapters.jdbc.WrappedConnection.returnConnection(WrappedConnection.java:298)
at org.jboss.jca.adapters.jdbc.WrappedConnection.close(WrappedConnection.java:256)
如果给bean一个ConsoleLogFacadeBean注释@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 这没有警告
ConsoleLogFacadeBean中应该有什么正确的TransactionAttribute 或者更改,私有 EntityManager em 对所有bean来说都很常见