1 2 Previous Next 18 Replies Latest reply on Jul 31, 2009 4:05 AM by frankthetank

    Could not find new XAResource to use for recovering non-seri

      Sorry about yet another thread about this warning, but i edited jbossjta-properties as indicated in the wiki, to no avail.

      <property
       name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
       value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>

      I'm using JBoss 4.2.3.GA and JBM 1.4.2.GA-SP1

      The warning occurs even with only one node in the cluster. Starting JBoss with an empty JBM database and doing nothing, i still get the warning periodically.


        • 1. Re: Could not find new XAResource to use for recovering non-

          No ideas?

          • 2. Re: Could not find new XAResource to use for recovering non-
            gaohoward

            hi, i'm sorry can you put here the link you are refering the warning to? Thanks.

            • 3. Re: Could not find new XAResource to use for recovering non-

              Here is the complete warning:

              WARN [loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 28, 26, 1-7f000101:df6e:496776d2:5977f000101:df6e:496776d2:5a4 >
              


              • 4. Re: Could not find new XAResource to use for recovering non-

                On second thought I'm not sure that was what you were asking..

                • 5. Re: Could not find new XAResource to use for recovering non-
                  gaohoward

                  Hi, actually I'm asking for the link to your original post so I can take a look of the history of this topic. Anyway, don't mind it much, as I can search it myself. Thanks

                  • 6. Re: Could not find new XAResource to use for recovering non-

                    Ah that was what you meant. It wasn't my thread, but browsing the wiki and forum it seemed to be a recurring theme.
                    Anyway this links has an explanation that seems convincing to me, but it didn't work (even with one node):
                    http://www.jboss.org/community/docs/DOC-13171#comment-1301

                    • 7. Re: Could not find new XAResource to use for recovering non-
                      clebert.suconic

                      Maybe you missed some property there?

                      I was looking on how this is configured on EAP, and this is what we have there:

                       <properties depends="arjuna" name="jta">^M
                       <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"^M
                       value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
                       <!--
                       Support subtransactions in the JTA layer?
                       Default is NO.
                       -->
                       <property name="com.arjuna.ats.jta.supportSubtransactions" value="NO"/>
                       <property name="com.arjuna.ats.jta.jtaTMImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"/>
                       <!--
                       com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
                       -->
                       <property name="com.arjuna.ats.jta.jtaUTImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>
                       <!--
                       com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
                       -->
                       </properties>
                      


                      Also.. make sure you have DefaultJMSProvider at your jms-ds.xml.

                      • 8. Re: Could not find new XAResource to use for recovering non-

                        I already have these parameters, here is my jbossjta-properties.xml:

                        <?xml version="1.0" encoding="UTF-8"?>
                        <transaction-service>
                         <properties depends="common" name="arjuna">
                         <!--
                         Transaction Reaper Timeout (default is 120000 ms).
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.coordinator.txReaperTimeout" value="120000"/>
                         <!--
                         Transaction Reaper Mode, can be: NORMAL or DYNAMIC (default is NORMAL).
                         -->
                         <property name="com.arjuna.ats.arjuna.coordinator.txReaperMode" value="DYNAMIC"/>
                         <!--
                         (default is NO)
                         -->
                         <property name="com.arjuna.ats.arjuna.coordinator.asyncCommit" value="NO"/>
                         <!--
                         (default is NO)
                         -->
                         <property name="com.arjuna.ats.arjuna.coordinator.asyncPrepare" value="NO"/>
                         <!--
                         (default is YES)
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.coordinator.commitOnePhase" value="YES"/>
                         <!--
                         (default is defaultStore)
                         -->
                         <property name="com.arjuna.ats.arjuna.objectstore.localOSRoot" value="defaultStore"/>
                         <!--
                         default is under user.home - must be writeable!)
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.objectstore.objectStoreDir" value="PutObjectStoreDirHere"/>
                         <!--
                         (default is ON)
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.objectstore.objectStoreSync" value="ON"/>
                         <!--
                         (default is ShadowNoFileLockStore)
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.objectstore.objectStoreType" value="ShadowNoFileLockStore"/>
                         <!--
                         (default is 255)
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.objectstore.hashedDirectories" value="255"/>
                         <!--
                         (default is ON)
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.objectstore.transactionSync" value="ON"/>
                         <!--
                         (Must be unique across all Arjuna instances.)
                         -->
                         <property name="com.arjuna.ats.arjuna.xa.nodeIdentifier" value="1"/>
                         <!-- property
                         name="com.arjuna.ats.arjuna.coordinator.actionStore"
                         value="HashedActionStore"
                         value="JDBCActionStore"
                         -->
                         <!-- property
                         name="com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
                         value="JDBCAccess"
                         -->
                         <!-- property
                         name="com.arjuna.ats.arjuna.objectstore.objectStoreType"
                         value="ShadowNoFileLockStore"
                         value="JDBCStore"
                         -->
                         <!-- property
                         name="com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
                         value="JDBCAccess"
                         -->
                         <!-- property
                         name="com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeInitial"
                         value="1"
                         -->
                         <!-- property
                         name="com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum"
                         value="1"
                         -->
                         <!-- property
                         name="com.arjuna.ats.arjuna.objectstore.jdbcPoolPutConnections"
                         value="false"
                         -->
                         <!-- property
                         name="com.arjuna.ats.arjuna.internal.arjuna.objectstore.cacheStore.size"
                         value=""
                         -->
                         <!-- property
                         name="com.arjuna.ats.arjuna.internal.arjuna.objectstore.cacheStore.period"
                         value=""
                         -->
                         <!--
                         The location for creating temporary files, e.g., Uids.
                         Default is under user.home.
                         IMPORTANT: make sure the directory is lockable, e.g., /tmp on Unix
                         may not be!
                         -->
                         <!--
                         <property
                         name="com.arjuna.ats.arjuna.common.varDir"
                         value="var"/>
                         -->
                         </properties>
                         <properties name="common">
                         <!-- CLF 2.0 properties -->
                         <property name="com.arjuna.common.util.logging.DebugLevel"
                         type="System" value="0x00000000"/>
                         <property name="com.arjuna.common.util.logging.FacilityLevel"
                         type="System" value="0xffffffff"/>
                         <property name="com.arjuna.common.util.logging.VisibilityLevel"
                         type="System" value="0xffffffff"/>
                         <property name="com.arjuna.common.util.logger" type="System" value="log4j"/>
                         </properties>
                         <properties depends="arjuna" name="txoj">
                         <!--
                         (default is LockStore of installation - must be writeable!)
                         -->
                         <!--
                         <property
                         name="com.arjuna.ats.txoj.lockstore.lockStoreDir"
                         value="LockStore"/>
                         -->
                         <!--
                         (default is BasicLockStore)
                         -->
                         <property name="com.arjuna.ats.txoj.lockstore.lockStoreType" value="BasicLockStore"/>
                         <!--
                         (default is NO)
                         -->
                         <property name="com.arjuna.ats.txoj.lockstore.multipleLockStore" value="NO"/>
                         <!--
                         (default is YES)
                         -->
                         <property name="com.arjuna.ats.txoj.lockstore.singleLockStore" value="YES"/>
                         <!--
                         (default is YES)
                         -->
                         <property
                         name="com.arjuna.ats.txoj.lockstore.allowNestedLocking" value="YES"/>
                         </properties>
                         <properties depends="arjuna" name="jta">
                         <!--
                         Support subtransactions in the JTA layer?
                         Default is NO.
                         -->
                         <property name="com.arjuna.ats.jta.supportSubtransactions" value="NO"/>
                         <property name="com.arjuna.ats.jta.jtaTMImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"/>
                         <!--
                         com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
                         -->
                         <property name="com.arjuna.ats.jta.jtaUTImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>
                         <!--
                         com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
                         -->
                         <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
                         value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
                         </properties>
                         <properties depends="arjuna,txoj,jta" name="recoverymanager">
                         <!--
                         Properties used only by the RecoveryManager.
                         -->
                         <!--
                         Periodic recovery settings.
                         Time values in this section are in seconds.
                         -->
                         <!--
                         Interval in seconds between initiating the periodic recovery modules.
                         Default is 120 seconds.
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod" value="120"/>
                         <!--
                         Interval in seconds between first and second pass of periodic recovery.
                         Default is 10 seconds.
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod" value="10"/>
                         <!--
                         Periodic recovery modules to use. Invoked in sort-order of names.
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.recovery.recoveryExtension1" value="com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule"/>
                         <property
                         name="com.arjuna.ats.arjuna.recovery.recoveryExtension2" value="com.arjuna.ats.internal.txoj.recovery.TORecoveryModule"/>
                         <property
                         name="com.arjuna.ats.arjuna.recovery.recoveryExtension3" value="com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule"/>
                         <!--
                         Expired entry removal
                         -->
                         <!--
                         Expiry scanners to use (order of invocation is random).
                         Names must begin with "com.arjuna.ats.arjuna.recovery.expiryScanner"
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager" value="com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner"/>
                         <!--
                         Interval, in hours, between running the expiry scanners.
                         This can be quite long. The absolute value determines the interval -
                         if the value is negative, the scan will NOT be run until after one
                         interval has elapsed. If positive the first scan will be immediately
                         after startup. Zero will prevent any scanning.
                         Default = 12 = run immediately, then every 12 hours.
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.recovery.expiryScanInterval" value="12"/>
                         <!--
                         Age, in hours, for removal of transaction status manager item.
                         This should be longer than any ts-using process will remain running.
                         Zero = Never removed. Default is 12.
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.recovery.transactionStatusManagerExpiryTime" value="12"/>
                         <!--
                         Use this to fix the port on which the TransactionStatusManager listens,
                         The default behaviour is to use any free port.
                         -->
                         <property
                         name="com.arjuna.ats.arjuna.recovery.transactionStatusManagerPort" value="0"/>
                         </properties>
                         <properties depends="jta" name="jdbc">
                         <!--
                         property name="com.arjuna.ats.jdbc.isolationLevel" value="TRANSACTION_SERIALIZABLE"/>
                         -->
                         </properties>
                        </transaction-service>


                        And my hajndi-jms-ds.xml does define DefaultJMSProvider:
                        <?xml version="1.0" encoding="UTF-8"?>
                        
                        <connection-factories>
                        
                         <!-- ==================================================================== -->
                         <!-- JMS Stuff -->
                         <!-- ==================================================================== -->
                        
                         <!-- The JMS provider loader -->
                         <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
                         name="jboss.messaging:service=JMSProviderLoader,name=HAJNDIJMSProvider">
                         <attribute name="ProviderName">DefaultJMSProvider</attribute>
                         <attribute name="ProviderAdapterClass">
                         org.jboss.jms.jndi.JNDIProviderAdapter
                         </attribute>
                         <!-- The combined connection factory -->
                         <attribute name="FactoryRef">XAConnectionFactory</attribute>
                         <!-- The queue connection factory -->
                         <attribute name="QueueFactoryRef">XAConnectionFactory</attribute>
                         <!-- The topic factory -->
                         <attribute name="TopicFactoryRef">XAConnectionFactory</attribute>
                         <!-- Access JMS via HAJNDI -->
                         <attribute name="Properties">
                         java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
                         java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
                         java.naming.provider.url=${jboss.bind.address:127.0.0.1}:1100
                         jnp.disableDiscovery=false
                         jnp.partitionName=${jboss.partition.name:DefaultPartition}
                         jnp.discoveryGroup=${jboss.partition.udpGroup:230.0.0.4}
                         jnp.discoveryPort=1102
                         jnp.discoveryTTL=16
                         jnp.discoveryTimeout=5000
                         jnp.maxRetries=1
                         </attribute>
                         </mbean>
                        
                         <!-- The server session pool for Message Driven Beans -->
                         <mbean code="org.jboss.jms.asf.ServerSessionPoolLoader"
                         name="jboss.messaging:service=ServerSessionPoolMBean,name=StdJMSPool">
                         <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
                         <attribute name="PoolName">StdJMSPool</attribute>
                         <attribute name="PoolFactoryClass">
                         org.jboss.jms.asf.StdServerSessionPoolFactory
                         </attribute>
                         </mbean>
                        
                         <!-- JMS XA Resource adapter, use this to get transacted JMS in beans -->
                         <tx-connection-factory>
                         <jndi-name>JmsXA</jndi-name>
                         <xa-transaction/>
                         <rar-name>jms-ra.rar</rar-name>
                         <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
                         <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
                         <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/DefaultJMSProvider</config-property>
                         <max-pool-size>20</max-pool-size>
                         <security-domain-and-application>JmsXARealm</security-domain-and-application>
                        <!-- <use-java-context>false</use-java-context>-->
                         </tx-connection-factory>
                        
                        </connection-factories>


                        • 9. Re: Could not find new XAResource to use for recovering non-
                          clebert.suconic

                          I'm really not sure if this should matter, but the only difference from your file and the one on EAP (found this using kompare) is the order on where you described JBM. On the EAP it is the first item on the properties.


                          *Maybe* Arjuna is recovering the XIDs from the file-storage before JBM had a chance to recover them?


                          ...
                           <properties depends="arjuna" name="jta">
                          
                           <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
                          
                           value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
                           <!--
                           Support subtransactions in the JTA layer?
                           Default is NO.
                           -->
                           <property name="com.arjuna.ats.jta.supportSubtransactions" value="NO"/>
                           <property name="com.arjuna.ats.jta.jtaTMImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"/>
                           <!--
                           com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
                           -->
                           <property name="com.arjuna.ats.jta.jtaUTImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>
                           <!--
                           com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
                           -->
                           </properties>
                          ...
                          




                          If that's not the issue, you will need to look for other errors on the log and see if there is any other warnings.

                          • 10. Re: Could not find new XAResource to use for recovering non-

                            I have tried changing the order, it doesn't change anything.
                            I have no errors in the log files, and the only other warning is

                            2009-04-07 11:16:13,480 WARN [com.arjuna.ats.jbossatx.jta.TransactionManagerService] XAExceptionFormatters are not supported by the JBossTS Transaction Service - this warning can safely be ignored


                            I have absolutely no clue what to do about it but it doesn't sound healthy.

                            • 11. Re: Could not find new XAResource to use for recovering non-

                              In case my last sentece was confusing I meant what sounds unhealthy isn't the " XAExceptionFor
                              matters are not supported by the JBossTS Transaction Service - this warning can safely be ignored" but the fact that some unknown stuff failed to be serialized.

                              • 12. Re: Could not find new XAResource to use for recovering non-
                                clebert.suconic

                                Did you try removing your temp-directories and data-directories after changing the configs?

                                Let me know and I will do some testing after your input.

                                • 13. Re: Could not find new XAResource to use for recovering non-

                                  I have tried removing the following directories of my all server:
                                  temp,work,data.

                                  It worked! I no longer have the periodic warning.
                                  Maybe the data directory contained old transaction data that couldn't be recovered because the list and definitions of destinations has changed. Thanks for your help.

                                  • 14. Re: Could not find new XAResource to use for recovering non-
                                    clebert.suconic

                                    Maybe the order wouldn't have affected you.

                                    But I would leave that alone just in case :-)

                                    1 2 Previous Next