2010-12-17 4 views
3

Ich verbinde eine Verbindung zu einer Mainframe-Umgebung von Java mit dem JCA-Connector von comporsys. Die Java-Anwendung wird in JBOSS bereitgestellt. Der Verbinder auf diese Weise konfiguriert:Java-Mainframe-Kommunikation über JCA-Fehler - Verbindung ist nicht in Transaktion

<connection-factories> 
    <no-tx-connection-factory> 
     <jndi-name>ComporsysIMSConnector</jndi-name> 
     <rar-name>ims_connector_port4027_CreditAuth.rar</rar-name> 
     <connection-definition>de.comporsys.connector.ims.ConnectionFactory</connection-definition> 
     <min-pool-size>1</min-pool-size> 
     <max-pool-size>15</max-pool-size> 
     <shrinking-enabled>true</shrinking-enabled> 
     <shrink-period-minutes>2</shrink-period-minutes> 
     <logging-enabled>true</logging-enabled> 
     <!-- <log-filename>/opt/jboss/xxxx/logs/ims_connector.log</log-filename> --> 
     <log-filename>D:\ims_connector.log</log-filename> 
    </no-tx-connection-factory> 
</connection-factories> 

Die Kommunikation keine 100% in Ordnung sein muss, wie ich eine Menge Fehler in den Protokollen wie diese:

[2010-12-16 05:21:10,061] WARN (org.jboss.resource.connectionmanager.NoTxConnectionManager:738) - Pearl 1,DE82000,CGN,D5 ,10450565,768209411 - Connection error occured: org.jboss.resource.conn[email protected]3dcbef2a[state=NORMAL [email protected] handles=1 lastUse=1292++++++++++++ permit=true trackByTx=false mcp=org.jbos[email protected]7afdd15b context=org[email protected]2dbbec72] 
de.comporsys.connector.ims.imstoc.ImstocException: IMS Connect-Error: Return=40, Reason=59 
    at de.comporsys.connector.ims.imstoc.Connection.execute(Connection.java:261) 
    at de.comporsys.connector.ims.imstoc.IMSTOCWorkunit.execute(IMSTOCWorkunit.java:261) 
    at de.comporsys.connector.ims.imstoc.IMSTOCWorkunit.resumeTPipe(IMSTOCWorkunit.java:167) 
    at de.comporsys.connector.ims.imstoc.IMSTOCWorkunit.execute(IMSTOCWorkunit.java:98) 
    at de.comporsys.connector.AbstractStatement.executeRequest(AbstractStatement.java:45) 
    at de.comporsys.connector.ims.Statement.execute(Statement.java:101) 
    at com.xxx.ims.access.GenericImsTransaction.executeUCIAysnc(GenericImsTransaction.java:340) 
    at com.xxx.ims.access.GenericImsTransaction.executeUCI(GenericImsTransaction.java:127) 
    at com.xxx.ims.access.GenericImsTransaction.execute(GenericImsTransaction.java:60) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:50) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleRepromptWithEnter(UpdateCheckinIMF.java:280) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:208) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleOverPaymentResponse(UpdateCheckinIMF.java:367) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:219) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleRepromptWithEnter(UpdateCheckinIMF.java:280) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:208) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:121) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:22) 
    at com.xxx.core.rental.VehicleCheckinBC.executeUpdateCheckInWizardTransaction(VehicleCheckinBC.java:541) 
    at com.xxx.core.rental.VehicleCheckinBC.executeVehicleCheckin(VehicleCheckinBC.java:315) 
    at com.xxx.merlin.vehiclecheckin.VehicleCheckinMH.processMessage(VehicleCheckinMH.java:112) 
    at com.xxx.merlin.servlet.util.HttpRequestHandler.handleMessage(HttpRequestHandler.java:150) 
    at com.xxx.merlin.servlet.util.HttpRequestHandler.processRequest(HttpRequestHandler.java:88) 
    at com.xxx.merlin.servlet.MerlinServlet.doPost(MerlinServlet.java:22) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at com.xxx.scope.ServletRequestScopeFilter.doFilter(ServletRequestScopeFilter.java:37) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
    at java.lang.Thread.run(Thread.java:595) 
[2010-12-16 05:21:10,155] WARN (com.xxx.ims.access.GenericImsTransaction:82) - Pearl 1,DE82000,CGN,D5 ,10450565,768209411 - pac71068: ResourceException caught upon IMF execute. IMF body was:/MSKY\/RAN768209411\/MVA10450565\/DOM23021\/DOGY/G8\/COLN\/AGT82000\/OWM\/FLO\/MOPCV\/DLAY\/DOLCGN\/DOD16Dec10/0600\/TAM39058\/ACTA\/RPIY\/ENT\/AUT\/PRTN\@ 
javax.resource.spi.ResourceAdapterInternalException: de.comporsys.connector.NoActiveTransactionException: connection is not in transaction: [email protected] 
    at de.comporsys.connector.AbstractManagedConnection.getActiveTransaction(AbstractManagedConnection.java:216) 
    at de.comporsys.connector.AbstractStatement.executeRequest(AbstractStatement.java:53) 
    at de.comporsys.connector.ims.Statement.execute(Statement.java:101) 
    at com.xxx.ims.access.GenericImsTransaction.executeUCIAysnc(GenericImsTransaction.java:340) 
    at com.xxx.ims.access.GenericImsTransaction.executeUCI(GenericImsTransaction.java:127) 
    at com.xxx.ims.access.GenericImsTransaction.execute(GenericImsTransaction.java:60) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:50) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleRepromptWithEnter(UpdateCheckinIMF.java:280) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:208) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleOverPaymentResponse(UpdateCheckinIMF.java:367) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:219) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleRepromptWithEnter(UpdateCheckinIMF.java:280) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:208) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:121) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:22) 
    at com.xxx.core.rental.VehicleCheckinBC.executeUpdateCheckInWizardTransaction(VehicleCheckinBC.java:541) 
    at com.xxx.core.rental.VehicleCheckinBC.executeVehicleCheckin(VehicleCheckinBC.java:315) 
    at com.xxx.merlin.vehiclecheckin.VehicleCheckinMH.processMessage(VehicleCheckinMH.java:112) 
    at com.xxx.merlin.servlet.util.HttpRequestHandler.handleMessage(HttpRequestHandler.java:150) 
    at com.xxx.merlin.servlet.util.HttpRequestHandler.processRequest(HttpRequestHandler.java:88) 
    at com.xxx.merlin.servlet.MerlinServlet.doPost(MerlinServlet.java:22) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at com.xxx.scope.ServletRequestScopeFilter.doFilter(ServletRequestScopeFilter.java:37) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
    at java.lang.Thread.run(Thread.java:595) 

    at de.comporsys.connector.ExceptionHandler.handle(ExceptionHandler.java:46) 
    at de.comporsys.connector.AbstractStatement.executeRequest(AbstractStatement.java:55) 
    at de.comporsys.connector.ims.Statement.execute(Statement.java:101) 
    at com.xxx.ims.access.GenericImsTransaction.executeUCIAysnc(GenericImsTransaction.java:340) 
    at com.xxx.ims.access.GenericImsTransaction.executeUCI(GenericImsTransaction.java:127) 
    at com.xxx.ims.access.GenericImsTransaction.execute(GenericImsTransaction.java:60) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:50) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleRepromptWithEnter(UpdateCheckinIMF.java:280) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:208) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleOverPaymentResponse(UpdateCheckinIMF.java:367) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:219) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:229) 
    at com.xxx.ims.UpdateCheckinIMF.handleRepromptWithEnter(UpdateCheckinIMF.java:280) 
    at com.xxx.ims.UpdateCheckinIMF.parseOutput(UpdateCheckinIMF.java:208) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:57) 
    at com.xxx.ims.UpdateCheckinIMF.executeTransactionInternally(UpdateCheckinIMF.java:28) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:121) 
    at com.xxx.ims.GenericCheckinOperation.executeTransaction(GenericCheckinOperation.java:22) 
    at com.xxx.core.rental.VehicleCheckinBC.executeUpdateCheckInWizardTransaction(VehicleCheckinBC.java:541) 
    at com.xxx.core.rental.VehicleCheckinBC.executeVehicleCheckin(VehicleCheckinBC.java:315) 
    at com.xxx.merlin.vehiclecheckin.VehicleCheckinMH.processMessage(VehicleCheckinMH.java:112) 
    at com.xxx.merlin.servlet.util.HttpRequestHandler.handleMessage(HttpRequestHandler.java:150) 
    at com.xxx.merlin.servlet.util.HttpRequestHandler.processRequest(HttpRequestHandler.java:88) 
    at com.xxx.merlin.servlet.MerlinServlet.doPost(MerlinServlet.java:22) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at com.xxx.scope.ServletRequestScopeFilter.doFilter(ServletRequestScopeFilter.java:37) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
    at java.lang.Thread.run(Thread.java:595) 
Caused by: de.comporsys.connector.NoActiveTransactionException: connection is not in transaction: [email protected] 
    at de.comporsys.connector.AbstractManagedConnection.getActiveTransaction(AbstractManagedConnection.java:216) 
    at de.comporsys.connector.AbstractStatement.executeRequest(AbstractStatement.java:53) 
    ... 52 more 

Leider habe ich keine Informationen, was bedeutet es, dass Composys es nicht mehr unterstützt. Haben Sie eine Idee, warum das passiert?

Es gibt eine IMSConnectionFactory, die die COMPORSYS

stopfen initialisiert
public static ConnectionFactory getIMSConnectionFactory() { 
     InitialContext context; 
     ConnectionFactory imsConnectionFactory = null; 

     try { 
      // Create a Properties Object and set the JNDI properties 
      Properties jndiProperties = new Properties(); 

      jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, WizardContext.getInstance().getWizardProperties().getJndiClass()); 

      // Try obtaining a JNDI context so that the application server can be queried 
      context = new InitialContext(jndiProperties); 

      // Request the Connection Factory from the application server using a JNDI context lookup 
      imsConnectionFactory = (ConnectionFactory) context.lookup(WizardContext.getInstance().getWizardProperties().getConnectionJndi()); 

Ther Transaktionsabwicklung in m_IMSStatementSync.execute sein könnte, aber es ist eine Blackbox, wie es von einem fremden Sachen ist. Der IMSConnector registriert sich in JBOSS und wir greifen darauf in einem Servlet zu. Details der Transaktion Handler:

für (int Versuche = 1 + tenaciousness; Versuche> 0;) { try {

    // Slightly nervous re. the location of this block. 
        // It looks like it should be above, where it is now commented out, 
        // but moving it there coincided with failures. 
        // This may well have just been a coincidence - but it all happened at cutover time, 
        // so for the sake of safety I've put it back here for now. 
        m_IMSStatementSync = m_IMSConnection.createStatement(); /* This created by the connection factory */ 
        m_IMSRequest = m_IMSStatementSync.createRequest(); 
        m_IMSRequest.setTimeout(m_WizardConfiguration.getWizardTimeOut()); 
        m_IMSRequest.setTransaction(p_Input.get_TransactionCode()); 
        m_IMSRequest.setCommArea(p_Input); 
        m_IMSRequest.setLterm(p_Input.get_TSR().get_ID()); 
        m_IMSRequest.setTimer((byte) WizardOperationConstants.IMS_CONNECT_SYNC_TIMEOUT); 
        // end of block 

        // Execute the IMS transaction 
        m_IMSReply = m_IMSStatementSync.execute(m_IMSRequest);  /*pac7102*/ 

        attempts = 0; 
       } 
       catch (NoActiveTransactionException e) { 

        if (--attempts < 1) { 
         tenaciousness >>= 1; 
         throw (e); 
        } 
        try { 
         wait(rnd()); 
        } 
        catch (InterruptedException f) { ... } 

       } 

Antwort

2

Der Grund für die Warnung ist ziemlich explizit aus dem Stack-Trace:

de.comporsys.connector.NoActiveTransactionException: connection is not in transaction 

.... aber Sie möchten auf jeden Fall klären, ob die Schnittstelle tatsächlich funktioniert oder nicht. Auf jeden Fall ist die Warnung, dass die Verbindung nicht in einer Transaktion ist, weil Sie Ihren JCA-Pool als nicht transaktionalen Pool definiert haben. Um eine Transaktionspool zu wechseln, sollte es in etwa so aussehen:

<connection-factories> 
    <tx-connection-factory> 
     <jndi-name>ComporsysIMSConnector</jndi-name> 
     <rar-name>ims_connector_port4027_CreditAuth.rar</rar-name> 
     <connection-definition>de.comporsys.connector.ims.ConnectionFactory</connection-definition> 
     <min-pool-size>1</min-pool-size> 
     <max-pool-size>15</max-pool-size> 
     <shrinking-enabled>true</shrinking-enabled> 
     <shrink-period-minutes>2</shrink-period-minutes> 
     <logging-enabled>true</logging-enabled> 
     <!-- <log-filename>/opt/jboss/xxxx/logs/ims_connector.log</log-filename> --> 
     <log-filename>D:\ims_connector.log</log-filename> 
    </tx-connection-factory> 
</connection-factories> 

ich davon aus bin dies nur unterstützt, weil die Warnmeldung zeigt es die Verbindungen in einer Transaktion zu sein, erwartet das ist, was die tx -connection-factory wird tun.

Ich würde es eine Drehung geben und sehen, was passiert.

+0

Danke, ich werde – HamoriZ

+0

testen Leider hat es nicht geholfen. Ich bekomme den gleichen Fehler – HamoriZ

1

Transaktion Verbindung Fabrik Erklärung ist notwendig, aber nicht ausreichend.

Sie müssen den Methoden, die mit der Datenbank interagieren, auch eine deklarative Transaktion hinzufügen. Ich würde "PROPAGATION = REQUIRED_NEW" empfehlen.

+0

Wo kann ich das tun? Es interagiert nicht mit einer Datenbank, sondern mit einem Mainframe. – HamoriZ

+0

Ich habe einige zusätzliche Informationen zur Frage – HamoriZ

1

Von welchem ​​Standort aus starten Sie den Anruf an Ihre JCA-Ressource?

Mit anderen Worten, was ist

at com.xxx.ims.access.GenericImsTransaction.executeUCIAysnc(GenericImsTransaction.java:340) 

?

Aus der Stack-Kurve scheint klar, dass hier kein EJB beteiligt ist. Der Aufruf kommt von einem Servlet und wird dann an Ihren eigenen Code weitergegeben, bis die JCA-Verbindung verwendet wird.

GenericImsTransaction klingt wie es etwas Transaktions tut, aber was genau? Sie sollten überprüfen, ob irgendwo eine Transaktion gestartet wurde.In Ihren Servlets können Sie halten eine Usertransaction erhalten, die ein einfache Schnittstelle JTA-Transaktionen zu starten und zu begehen:

@Resource 
private UserTransaction tx; 

Wenn Sie eine Pre-Java EE 5-Version von JBoss AS verwenden, dann können Sie verwenden Sie den folgenden Code eine Usertransaction zu erhalten:

private UserTransaction getUserTransaction() { 
    UserTransaction tx = null; 

    try { 
     tx = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction"); 
    } catch (NamingException e) { 
     throw new RuntimeException("No UserTransaction available at default location, is a transaction manager installed?", e); 
    } 

    return tx; 
} 

Irgendwo in Ihrer Aufrufliste, die Sie brauchen dann tx.begin(); anrufen und danach tx.commit() oder tx.rollback().

Wenn Sie EJB3 verwenden können, ist es einfacher, Ihr Servlet eine Stateless Session-Bean (@Stateless) aufrufen zu lassen und diese Bean dann Ihren anderen Code aufrufen zu lassen. Sie haben dann automatisch eine Transaktion und der Container kümmert sich um das Commit oder Rollback. Wenn Sie EJBs noch nicht verwenden, kann es schwierig sein, den vorhandenen Code zu ihrer Verwendung nachzurüsten, und der manuelle JTA-Code lässt sich möglicherweise leichter einfügen.

+0

hinzugefügt. Ich habe einige zusätzliche Informationen zur Frage hinzugefügt – HamoriZ