Kodo can be integrated with your J2EE applications in a number of ways. The simplest is just to include the Kodo libraries in a J2EE EAR file and call Kodo directly from there. This will be problematic, however, if you want Kodo to share resources with other beans or if you have multiple beans deployed that need to use the same Kodo resource.
The second way to integrate Kodo is to configure and bind an instance of com.solarmetric.kodo.impl.jdbc.ee.EEPersistenceManagerFactory into JNDI. Although the mechanism by which you do this is up to you, the most common way is to create a startup class according to your application server's documentation that will create an instance of EEPersistenceManagerFactory and then bind it in JNDI. For example, in WebLogic you could write a startup class as follows::
Example 10.1. Binding a PersistenceManagerFactory into JNDI via a WebLogic startup class
package samples.weblogic.kodo; import javax.naming.*; import weblogic.common.T3ServicesDef; import weblogic.common.T3StartupDef; import java.util.Hashtable; import com.solarmetric.kodo.impl.jdbc.ee.EEPersistenceManagerFactory; /** * This startup class created and binds an instance of a * Kodo EEPersistenceManagerFactory into JNDI. */ public class StartKodo implements T3StartupDef { private static String myJNDIName = "my.jndi.name"; private T3ServicesDef services; public void setServices (T3ServicesDef services) { this.services = services; } public String startup (String name, Hashtable args) throws Exception { String jndi = (String)args.get ("jndiname"); if (jndi == null || jndi.length () == 0) jndi = myJNDIName; EEPersistenceManagerFactory factory = new EEPersistenceManagerFactory (); // you could perform additional configuration of the // EEPersistenceManagerFactory here. Otherwise, the values // from the Kodo properties or system.prefs will be used. InitialContext ic = new InitialContext (); ic.bind (jndi, factory); // return a message for logging return "Bound EEPersistenceManagerFactory to " + jndi; } }
Example 10.2. Looking up the PersistenceManagerFactory in JNDI
PersistenceManagerFactory factory = (PersistenceManagerFactory) new InitialContext ().lookup ("java:/MyKodoJNDIName"); PersistenceManager pm = factory.getPersistenceManager ();
The third way to integrate Kodo in an application server is to utilize the Java Connector Architecture features of Kodo as described below.