1 Reply Latest reply on May 1, 2006 3:30 PM by rcarragher

    Firebird as JMS Persistence

    rcarragher

      I'm having some problems configuring Firebird as the JBoss MQ persistence, JBoss 3.2.7, using the Firebird RAR. I think it's my connection factory deployment, and how that gets referenced in the state-service and jdbc2-service xmls.

      My connection factory looks like this:

      <connection-factories>
       <tx-connection-factory>
       <jndi-name>jdbc/triversity/transactionware/2.5.2.0.315/FirebirdJMSDS</jndi-name>
       <!--<local-transaction/>-->
       <adapter-display-name>Firebird Database Connector</adapter-display-name>
       <config-property name="Database" type="java.lang.String">localhost/3050:c:/fbdb/te_jms.gdb</config-property>
       <user-name>trivers</user-name>
       <password>odyssey</password>
       <config-property name="TransactionIsolationName">TRANSACTION_READ_COMMITTED</config-property>
       <min-pool-size>2</min-pool-size>
       <prepared-statement-cache-size>5</prepared-statement-cache-size>
      <track-connection-by-tx>true</track-connection-by-tx>
       </tx-connection-factory>
      </connection-factories>


      When I reference this in my firebird-jdbc2-service.xml, I do the following:
      <mbean code="org.jboss.mq.pm.jdbc2.PersistenceManager"
       name="jboss.mq:service=PersistenceManager">
       <depends optional-attribute-name="ConnectionManager">jboss.jca:service=TxCM,name=jdbc/triversity/transactionware/2.5.2.0.315/FirebirdJMSDS</depends>
      ......
      </...>


      Similarly, I did the same for firebird-jdbc-state-service.xml. When I tried this, it seems to connect to the database fine, but the results earlier in a transaction are not found later in the transaction. I enabled MQ tracing, and it inserts to JMS_MESSAGES fine, but when it goes to delete the same transaction, it gets 0 results found. I also found that I couldn't set "CREATE_TABLES_ON_STARTUP" to true, because, again, the creation would work, but the very next set of statements to the database would get "table JMS_MESSAGES doesn't exist".

      So, I'm thinking I'm doing something wrong in my "ConnectionManager" setting. Is there a difference when the database is configured in a ConnectionFactory instead of a data source? BTW, I tried setting <local-transaction/>, and it made no appreciable difference.

      Let me know if posting the trace log would help.

      Thanks in advance,
      Rick

        • 1. Re: Firebird as JMS Persistence
          rcarragher

          When I added <xa-transaction/> to the connection factory definition it worked. In the Wiki, it says that JBoss does not need an XA connection for JMS persistence, so I didn't add it.

          Is this (another) limitation of Firebird's JCA adapter?