MySql 5.1 +JBoss 4.2.2 +XADatasource+Hibernate

View: New views
1 Messages — Rating Filter:   Alert me  

MySql 5.1 +JBoss 4.2.2 +XADatasource+Hibernate

by mmquelo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi everybody,

As You can easily understand from the email subject I am troubled
with Mysql\Jboss integration.

I use JBoss 4.2.2 and I access the MySql DB via a XA Datasource
(com.mysql.jdbc.jdbc2.optional.MysqlXADataSource). I define the queries
dinamically, accessing an Hibernate session through a Web Application
deployed into JBoss.

In the following example I want to persist a "Request" object into the XA
DS, via an hibernate\jta session.
To do this a call a "saveRequest()" method.

Every time I do a select against the XA DS everything goes as expected....as
soon as I want to do an hibernate "saveRequest()" (which dinamically
generates an Hibernate "insert" for the XA DS) I get back this fu__ing jboss
exception:

(EVERY TIME I EXECUTE AN "INSERT" AGAINST THE XA MYSQL DS I GET BACK THIS:)

  19:14:08,373 INFO  [STDOUT] Hibernate:
      insert
      into
          request
          (request_date, contract_id)
      values
          (?, ?)
  19:14:08,373 WARN  [TxConnectionManager] Connection error occured:
org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@1ae90c9[state=NORMAL
mc=org.jboss.resource.adapter.jdbc.xa.XAManagedConnection@144719c handles=1
lastUse=1202753648227 permit=true trackByTx=true
mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$OnePool@1991ccf
context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@1329346
xaResource=org.jboss.resource.connectionmanager.xa.JcaXAResourceWrapper@1a39fdc
txSync=null]
  java.lang.NullPointerException
   at
org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.setDate(WrappedPreparedStatement.java:342)
  ...
   at org.hibernate.type.DateType.set(DateType.java:44)
  )
   at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
   at java.lang.Thread.run(Unknown Source)
  19:14:08,376 INFO  [DateType] could not bind value '11 febbraio 2008' to
parameter: 1; Error; - nested throwable: (java.lang.NullPointerException)
  ...
  19:14:08,380 ERROR [STDERR]  at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
  19:14:08,380 ERROR [STDERR]  at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
  19:14:08,380 ERROR [STDERR]  at java.lang.Thread.run(Unknown Source)
  19:14:08,380 ERROR [STDERR] Caused by: java.lang.NullPointerException
  19:14:08,380 ERROR [STDERR]  at
org.jboss.resource.adapter.jdbc.WrappedStatement.internalClose(WrappedStatement.java:590)
  19:14:08,380 ERROR [STDERR]  at
org.jboss.resource.adapter.jdbc.WrappedStatement.close(WrappedStatement.java:75)
  19:14:08,380 ERROR [STDERR]  at
org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:534)
  ...
  19:14:08,381 ERROR [STDERR]  at
com.prj.DataManager.saveRequest(DataManager.java:46)

  19:14:08,412 ERROR [AssertionFailure] an assertion failure occured (this
may indicate a bug in Hibernate, but is more likely due to unsafe use of the
session)
  ...
   at java.lang.Thread.run(Unknown Source)
  19:14:08,413 WARN  [arjLoggerI18N]
[com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_2]
TwoPhaseCoordinator.beforeCompletion - failed for
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple@142b123
  ...
  19:14:08,414 WARN  [loggerI18N]
[com.arjuna.ats.internal.jta.resources.arjunacore.rollbackxaerror]
[com.arjuna.ats.internal.jta.resources.arjunacore.rollbackxaerror]
XAResourceRecord.rollback - xa error
[com.arjuna.ats.jta.utils.unknownerrorcode] Unknown error code:0
  19:14:08,414 WARN  [arjLoggerI18N]
[com.arjuna.ats.arjuna.coordinator.BasicAction_54] - Top-level abort of
action a156303:e9ef:47b08fd5:65 received TwoPhaseOutcome.FINISH_ERROR from
<ClassName:RecordType.JTA_RECORD>
  19:14:08,415 ERROR [STDERR] javax.transaction.RollbackException:
[com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted]
[com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't
commit because the transaction is in aborted state
  ...
  19:14:08,417 ERROR [STDERR]  at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)
  19:14:08,417 ERROR [STDERR]  ... 22 more
  19:14:08,417 ERROR [[ReEvaluation]] Servlet.service() for servlet
ReEvaluation threw exception
  ...
  )
   at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
   at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
   at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
   at java.lang.Thread.run(Unknown Source)


It's really weird because when a try to do the SAME "insert" manually the
DBMS works properly.

I also tried to define the DATASOURCE as a <local-tx-datasource> and It
worked as well!!!

Furthermore I made a Junit test which "locally" (without Jboss) persists the
"request" object using the
same hibernate mappings and It does persist!

So...I think the issue is localized in the XA\Transaction Manager
interaction....as u can see, everytime i avoid
this interaction everything goes right... it's weird, isnt' it?.... :O

I start to think that MysqlXADataSource.class in the Mysql .jar connector
does not do his
dirty job properly....

I hope that somebody having the same Issue found out how to overcome it!

Please, answer me to: mmquelo@...

Thank You anyway guys.

Massi



--
MySQL Java Mailing List
For list archives: http://lists.mysql.com/java
To unsubscribe:    http://lists.mysql.com/java?unsub=lists@...

LightInTheBox - Buy quality products at wholesale price!