Hi,

I have a spring-based application that connects to a local database and to a 
set of remote EJBs that are deployed on a Geronimo 2.1.4 server. I'm trying to 
configure a transaction manager that handles distributed transactions, because 
on a single service method I may have calls to the local db and to one or more 
EJBs (stateless session beans).

I've managed to configure distributed transactions in the past using Jencks and 
the Geronimo TM but for local datasources (1 mysql db and 1 jackrabbit 
repository), this configuration required the use of a UserTransaction object, I 
used spring's jndi mock functionality as I wasn't using a j2ee server. 

I'm trying to replicate this conf on my current app but my problem is that I 
can't get a hold of the remote UserTransaction object via jndi. This is how I'm 
trying to retrieve it:

        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.openejb.client.RemoteInitialContextFactory");
        properties.put("java.naming.provider.url", "ejbd://localhost:4201");
        Context context = new InitialContext(properties);
        context.lookup("java:comp/UserTransaction");

I'm getting this exception:

Exception in thread "main" javax.naming.NameNotFoundException: 
comp/UserTransaction does not exist in the system.  Check that the app was 
successfully deployed.
        at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:277)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)


If I go to the Geronimo console and look for UserTransaction using the JNDI 
Viewer I see that there is an user transaction object under the name 
java:comp/UserTransaction, so I'm guessing I'm using the correct jndi name on 
my code. Plus the app successfully retrieves the ejb proxies so I know the jndi 
service is up and running. 

How can I retrieve the user transaction then? If there's a reason why the user 
transaction is not provided for remote clients then does anybody knows of an 
alternative strategy to do client-managed transactions or any other kind of 
distributed transactions strategy that allows me to keep track of my local db 
changes as well the ejbs on the same transaction?

Thanks!
- Diego M.

Reply via email to