[jboss-user] [EJB/JBoss] - problem with usertransaction annotation

bridge007 do-not-reply at jboss.com
Wed Feb 6 04:38:02 EST 2008


Hi,

I'm trying to migrate a session bean from ejb 2.1 to ejb 3.0.
The migration is almost finished, but I have a problem while migrating
the usertransaction.  I want to use an annotation.
The annotation works fine for the datasource, but for the usertransaction it has no effect. I always get a NullpointerException.

This is the code before the usertransaction migration, but with datasource migration to ejb 3.0:

@Resource protected SessionContext c_sctSContext = null;
  | @Resource(mappedName="java:/LABSP_DS") javax.sql.DataSource database;
  |   protected javax.transaction.UserTransaction ut;
  |   ...
  | protected Connection initTransactionWithConnection()
  |       throws BSConnectionTroubleException {
  |     Connection returnConnection = null;
  |     
  |     try {
  |       this.ut = this.c_sctSContext.getUserTransaction();
  | 
  |       if (this.ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION) {
  |         getLogger()
  |             .debug(
  |                 this
  |                     + "Failure Transaction State != Status.STATUS_NO_TRANSACTION (" + this.ut.getStatus() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
  | 
  |         throw new BSConnectionTroubleException(
  |             "Failure Transaction State != Status.STATUS_NO_TRANSACTION (" + this.ut.getStatus() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
  |       }
  | 
  |       returnConnection = getConnection();
  |       this.ut.begin();
  | 
  |     } catch (Exception e) {
  |       getLogger().error("Error init connection/transaction:", e); //$NON-NLS-1$
  | 
  |       throw new BSConnectionTroubleException("Could not connect to database", e); //$NON-NLS-1$
  |     }
  | 
  |     return returnConnection;
  |   }

This code works fine.

Now my migration of the usertransaction (add of resource annotation and elemination of usertransaction lookup):

@Resource protected SessionContext c_sctSContext = null;
  | @Resource(mappedName="java:/LABSP_DS") javax.sql.DataSource database;
  | @Resource  protected javax.transaction.UserTransaction ut;
  |   ...
  | protected Connection initTransactionWithConnection()
  |       throws BSConnectionTroubleException {
  |     Connection returnConnection = null;
  |     
  |     try {
  |       
  |       if (this.ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION) {
  |         getLogger()
  |             .debug(
  |                 this
  |                     + "Failure Transaction State != Status.STATUS_NO_TRANSACTION (" + this.ut.getStatus() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
  | 
  |         throw new BSConnectionTroubleException(
  |             "Failure Transaction State != Status.STATUS_NO_TRANSACTION (" + this.ut.getStatus() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
  |       }
  | 
  |       returnConnection = getConnection();
  |       this.ut.begin();
  | 
  |     } catch (Exception e) {
  |       getLogger().error("Error init connection/transaction:", e); //$NON-NLS-1$
  | 
  |       throw new BSConnectionTroubleException("Could not connect to database", e); //$NON-NLS-1$
  |     }
  | 
  |     return returnConnection;
  |   }

After this migration, I always get a NullpointerException on line:

  | if (this.ut.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION)
  | 

This is because the usertransaction was not injected. The question is why?
Help is welcome!
Any idea?

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

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



More information about the jboss-user mailing list