[jboss-user] [EJB 3.0] - Re: Problem with TimerService

agenttokyo do-not-reply at jboss.com
Tue Apr 22 20:20:11 EDT 2008

"hasc" wrote : Hi,
  | i posted this question already in the seam forum, but i was told I should post the question here again...
  | I wrote a simple stateless bean to test the TimerService. i am using jboss 4.2.0GA

I hope you long ago solved your issue =)  Bit since I saw this problem a number of places w/out a solution I'm commenting here.

I ran into this moving from Jboss 4.0.5 to 4.2.2 using Postgresql 8.1

Your DS doesn't support the XA interface.  I assume there is a way to do this in HSQL as well but found no answer (I saw no XA DataSource in the hsqldb.jar)?  But... here is my solution.

In my postgres-dx.xml I had the usual local-tx-datasource, which was used for my entities.  I then added the xa-datasource 

  | <datasources>
  |   <local-tx-datasource>
  |     <jndi-name>PostGresDS</jndi-name>
  |     <connection-url>jdbc:postgresql://localhost:5432/blah</connection-url>
  |     <driver-class>org.postgresql.Driver</driver-class>
  |     <user-name>user</user-name>
  |     <password>password</password>    
  |   </local-tx-datasource>
  |   <xa-datasource>
  |     <jndi-name>XAPostGresDS</jndi-name>
  |     <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
  |     <xa-datasource-property name="ServerName">localhost</xa-datasource-property>
  |     <xa-datasource-property name="DatabaseName">blah</xa-datasource-property>
  |     <xa-datasource-property name="PortNumber">5432</xa-datasource-property>
  |     <xa-datasource-property name="User">user</xa-datasource-property>
  |     <xa-datasource-property name="Password">password</xa-datasource-property>
  |     <metadata>
  |       <type-mapping>PostgreSQL</type-mapping>
  |     </metadata>
  |   </xa-datasource>
  | </datasources>

The type-mapping is from standardjbosscmp-jdbc.xml

The configuration parameters were identifed in http://wiki.jboss.org/wiki/ConfigDataSources the wiki

And in your ejb-deployer, you should use your newly configured datasource (in my case XAPostGresDS)

  |   <mbean code="org.jboss.ejb.txtimer.DatabasePersistencePolicy" name="jboss.ejb:service=EJBTimerService,persistencePolicy=database">
  |     <!-- DataSourceBinding ObjectName -->
  |     <depends optional-attribute-name="DataSource">jboss.jca:service=DataSourceBinding,name=XAPostGresDS</depends>
  |     <!-- The plugin that handles database persistence -->
  |     <attribute name="DatabasePersistencePlugin">org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin</attribute>
  |     <!-- The timers table name -->
  |     <attribute name="TimersTable">TIMERS</attribute>
  |   </mbean>

I think thats about it.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4146006#4146006

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4146006

More information about the jboss-user mailing list