Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] Eclipselink reconnects to db on each call

Hello,

I'm having a bit of an issue and wondering if anyone has seen this
before.

I have a persistence.xml with 3 different persistence units as I have
segmented my logic into three different Oracle schema.  Within the Java
code, there are times where I access different persistence units
(depending on the data I need) - now that I am using cache coordination,
performance seems much worse, and part of it seems to be that within 30
seconds or so of a call being executed, the connections to the various
Pus are closed and the connection is logged out.

If I comment out the lines for cache coordination / RMI, things work as
they should - eg it doesn't time out and performance is reasonable.

I did add this property to my persistence.xml just to see if it had any
effect

<property name="eclipselink.jdbc.timeout" value="300000"/>

But it didn't seem to.

To actually get a connection I am calling a getMamanger() function in a
class that looks like this:from some of my business logic:

public class DBManager {

    protected RMICacheCoordinationConfig RMIcc;
    protected EntityManagerFactory emf;
    protected EntityManager em;

     public EntityManager getManager(String s) {
        try {
            if (emf == null) {
                emf = Persistence.createEntityManagerFactory(s);
			RMIcc = new  RMICacheCoordinationConfig();
                  RMIcc.customize(JpaHelper.getServerSession(emf));
                
                em = emf.createEntityManager();
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return em;
    }


}

I have a series of helper wrapper functions that call the different
EntityManager functions (load, remove, etc)

My RMI Caching function is what I got from the eclipselink list last
week - I'm new to RMI so I might have forgotten something:


public class RMICacheCoordinationConfig {


    public void customize(Session session) throws Exception {
            AbstractSession sessionImpl = (AbstractSession) session;

            RemoteCommandManager cm = new
RemoteCommandManager(sessionImpl);
            cm.setShouldPropagateAsynchronously(true);
            cm.getDiscoveryManager().setAnnouncementDelay(10);
            cm.getTransportManager().setNamingServiceType(
                    TransportManager.REGISTRY_NAMING_SERVICE);
            cm.setUrl("rmi://$HOST:1099");
            cm.setServerPlatform(sessionImpl.getServerPlatform());
            sessionImpl.setCommandManager(cm);
            sessionImpl.setShouldPropagateChanges(true);
            cm.initialize();
            try {
                Thread.sleep(5000);
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    

}


Thanks for any help!

-Tony


Back to the top