>con = ds.getConnection();
As you haven't mentioned about the data source, I'd check to make sure the data source
obtained is defined in admin server as transactional. That means the server should
provide ds object from the connection pool that uses xa driver.
Robert Hargreaves wrote:
I have a remote method X defined in a stateless session bean as being
TX_REQUIRES_NEW. In the implementation class for method X I call three
non-remote private methods A, B & C. Methods A and C create CMP Entity
beans using their respective create() methods, but method B creates
database records using hard-coded SQL like this:
public void B(int compNum, long oid) throws RemoteException {
Connection con = null;
try {
con = ds.getConnection();
Statement stmt = con.createStatement();
stmt.executeUpdate(("INSERT INTO companyMap (compNum, oid) "
+
"VALUES (" + compNum + "," + oid + ")"));
stmt.close();
} catch (Exception e) {
throw new RemoteException(e.toString());
} finally {
if (con != null) {
try {
con.close();
} catch (Exception e) {
}
}
}
}
Trouble is, if there is a problem in with any of the three methods, I
catch the appropriate exception in method X and throw an EJBException
which causes a rollback - but it only rolls back data created in methods
A & C (CMP entity bean records) and not data written to the database in
method B. I want the INSERT statement above to be included in the
transaction started when method X is called.
Any suggestions?
Rob.
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".