You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Peter Henderson <pe...@starjar.com> on 2009/05/17 13:19:19 UTC

OpenJPA on Tomcat

I am having some problems getting OpenJPA to work under 
tomcat 6.0.18.

I've created a data source in tomcat/conf/context.xml [1]
Referenced the data source in my web.xml [2]
Tested using the data source in a servlet at start up [3] 
which should prove my data source has been configured correctly.

Yet when I try to initialize an entity manager factor using 
my persistence.xml[4] I get an exception [5]


So what have I missed?


Peter.








[1] tomcat/conf/context.xml

<Context>

     <!-- Default set of monitored resources -->
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
	


     <Resource name="jdbc/StarjarEnterprise5DS" auth="Container"
		  type="javax.sql.DataSource" 
driverClassName="org.postgresql.Driver"
		  url="jdbc:postgresql://127.0.0.1:5432/mydb"
		  username="user" password="password" maxActive="20" 
maxIdle="10" maxWait="-1"/>


</Context>



[2] web.xml
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


     <display-name>Starjar Enterprise</display-name>

    <!-- servlet and mappings here -->

   <resource-ref>
       <description>Starjar Datasouce Connection</description>
       <res-ref-name>jdbc/StarjarEnterprise5DS</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
   </resource-ref>

</web-app>



[3] Test code
Context initCtx = null; Context envCtx;

DataSource ds = null;
try {
     initCtx = new InitialContext();
     envCtx = (Context) initCtx.lookup("java:comp/env");
     ds = (DataSource) 
envCtx.lookup("jdbc/StarjarEnterprise5DS");
     System.out.println("Got DATA SOURCE VIA " + ds);
     log.error("++++++++++++Got DATA SOURCE VIA JNDI " + ds);

     // Test out the datasource.
     Connection con = ds.getConnection();
     //PreparedStatement ps = con.prepareStatement("SELECT 
'Hello World'");
     PreparedStatement ps = con.prepareStatement("SELECT * 
from organization");
     ResultSet rs = ps.executeQuery();
     while (rs.next()) {
         String msg = rs.getString(1);
         log.info("Ran query got message " + msg);
     }
     rs.close();
     ps.close();
     con.close();


} catch (Exception ex) {
     log.error("+++++++++++++++++++++Did not get DS", ex);
     ex.printStackTrace();
}




[4] My persistence.xml
<?xml version="1.0"?>
<persistence version="1.0" 
xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
   <persistence-unit name="StarjarEnterpriseOpenjpaPU">

 
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<!-- 
<jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source> -->
 
<jta-data-source>java:comp/env/jdbc/StarjarEnterprise5DS</jta-data-source>

<!-- snip class entries -->
     <properties>
       <property name="openjpa.Log" value="DefaultLevel=INFO,
Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>

       <property name="openjpa.AutoDetach" value="close, 
commit"/>
       <!--property name="openjpa.DetachState" value="all"/-->
       <property name="openjpa.DetachState" 
value="loaded(DetachedStateField=false, 
DetachedStateManager=false)"/>

       <!--property name="openjpa.AutoDetach" value="close"/-->

       <!--<property name="openjpa.ConnectionDriverName" 
value="org.postgresql.Driver"/> -->




<!--
       <property name="openjpa.ConnectionURL" 
value="jdbc:hsqldb:tutorial_database"/>
       <property name="openjpa.ConnectionDriverName" 
value="org.hsqldb.jdbcDriver"/>
       <property name="openjpa.ConnectionUserName" value="sa"/>
       <property name="openjpa.ConnectionPassword" value=""/>
       <property name="openjpa.Log" 
value="DefaultLevel=WARN, Tool=INFO"/>
-->
     </properties>





[5] The exception
<openjpa-1.2.1-r752877:753278 fatal user error> 
org.apache.openjpa.persistence.ArgumentException: A JDBC 
Driver or DataSource class name must be specified in the 
ConnectionDriverName property.
	at 
org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:74)
	at 
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784)
	at 
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:561)
	at 
org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1265)
	at 
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:505)
	at 
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:430)
	at 
org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:103)
	at 
org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
	at 
org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
	at 
org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:863)
	at 
org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:854)
	at 
org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
	at 
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:183)
	at 
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
	at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
	at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
	at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
	at 
com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.getEntityManager(EntityManagerServlet.java:119)
	at 
com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.initializeEntityManger(EntityManagerServlet.java:102)
	at 
com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.init(EntityManagerServlet.java:141)
	at 
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
	at 
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
	at 
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
	at 
org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
	at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
	at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
	at 
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
	at 
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
	at 
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
	at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
	at 
org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
	at 
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
	at 
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at 
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at 
org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at 
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at 
org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at 
org.apache.catalina.startup.Catalina.start(Catalina.java:578)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at 
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at 
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
17-May-2009 12:02:18 
org.apache.catalina.core.StandardContext loadOnStartup





-- 
Peter Henderson
Director Starjar Limited.

Mobile: +44 (0) 778 233 8645
Email: peter.henderson@starjar.com
Web: www.starjar.com


Re: OpenJPA on Tomcat

Posted by Ognjen Blagojevic <og...@etf.bg.ac.rs>.
Hi Peter,

Did you put Postgres JDBC jar (say, postgresql-8.3-603.jdbc4.jar) in the 
tomcat/lib?

Double check that persistance.xml is correctly deployed into tomcat/webapp.

Also, try to change "jdbc/StarjarEnterprise5DS", into 
"java:comp/env/jdbc/StarjarEnterprise5DS", end let us know do you get 
the same exception.

Regards,
Ognjen


Peter Henderson wrote:
> David,
> 
> Thanks for helping, although I don't think this issue is HSQLDB related. 
> The persisence.xml file i posted had those items commented out. I've 
> attached a cleaned up version [1]
> 
> Cheers
> 
> Peter.
> 
> 
> [1] persistence.xml
> 
> <?xml version="1.0"?>
> <persistence version="1.0" 
> xmlns="http://java.sun.com/xml/ns/persistence" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
>   <persistence-unit name="StarjarEnterpriseOpenjpaPU">
> 
> 
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> 
> <jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source>
> 
> 
> <class>com.starjar.starjarenterprise5.domain.AccountCategory</class>
>     <exclude-unlisted-classes>true</exclude-unlisted-classes>
> 
>     <properties>
>       <property name="openjpa.Log" value="DefaultLevel=INFO,
> Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>
> 
>       <property name="openjpa.AutoDetach" value="close, commit"/>
>       <property name="openjpa.DetachState" 
> value="loaded(DetachedStateField=false, DetachedStateManager=false)"/>
>     </properties>
>   </persistence-unit>
> </persistence>
> 
> 
> 
> 
> David Beer wrote:
>> On Sun, 17 May 2009 12:19:19 +0100
>> Peter Henderson <pe...@starjar.com> wrote:
>>
>>> I am having some problems getting OpenJPA to work under tomcat 6.0.18.
>>>
>>> I've created a data source in tomcat/conf/context.xml [1]
>>> Referenced the data source in my web.xml [2]
>>> Tested using the data source in a servlet at start up [3] which 
>>> should prove my data source has been configured correctly.
>>>
>>> Yet when I try to initialize an entity manager factor using my 
>>> persistence.xml[4] I get an exception [5]
>>>
>>>
>>> So what have I missed?
>>>
>>>
>>> Peter.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> [1] tomcat/conf/context.xml
>>>
>>> <Context>
>>>
>>>      <!-- Default set of monitored resources -->
>>>      <WatchedResource>WEB-INF/web.xml</WatchedResource>
>>>     
>>>
>>>
>>>      <Resource name="jdbc/StarjarEnterprise5DS" auth="Container"
>>>           type="javax.sql.DataSource" 
>>> driverClassName="org.postgresql.Driver"
>>>           url="jdbc:postgresql://127.0.0.1:5432/mydb"
>>>           username="user" password="password" maxActive="20" 
>>> maxIdle="10" maxWait="-1"/>
>>>
>>>
>>> </Context>
>>>
>>>
>>>
>>> [2] web.xml
>>> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
>>> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
>>>
>>>
>>>      <display-name>Starjar Enterprise</display-name>
>>>
>>>     <!-- servlet and mappings here -->
>>>
>>>    <resource-ref>
>>>        <description>Starjar Datasouce Connection</description>
>>>        <res-ref-name>jdbc/StarjarEnterprise5DS</res-ref-name>
>>>        <res-type>javax.sql.DataSource</res-type>
>>>        <res-auth>Container</res-auth>
>>>    </resource-ref>
>>>
>>> </web-app>
>>>
>>>
>>>
>>> [3] Test code
>>> Context initCtx = null; Context envCtx;
>>>
>>> DataSource ds = null;
>>> try {
>>>      initCtx = new InitialContext();
>>>      envCtx = (Context) initCtx.lookup("java:comp/env");
>>>      ds = (DataSource) envCtx.lookup("jdbc/StarjarEnterprise5DS");
>>>      System.out.println("Got DATA SOURCE VIA " + ds);
>>>      log.error("++++++++++++Got DATA SOURCE VIA JNDI " + ds);
>>>
>>>      // Test out the datasource.
>>>      Connection con = ds.getConnection();
>>>      //PreparedStatement ps = con.prepareStatement("SELECT 'Hello 
>>> World'");
>>>      PreparedStatement ps = con.prepareStatement("SELECT * from 
>>> organization");
>>>      ResultSet rs = ps.executeQuery();
>>>      while (rs.next()) {
>>>          String msg = rs.getString(1);
>>>          log.info("Ran query got message " + msg);
>>>      }
>>>      rs.close();
>>>      ps.close();
>>>      con.close();
>>>
>>>
>>> } catch (Exception ex) {
>>>      log.error("+++++++++++++++++++++Did not get DS", ex);
>>>      ex.printStackTrace();
>>> }
>>>
>>>
>>>
>>>
>>> [4] My persistence.xml
>>> <?xml version="1.0"?>
>>> <persistence version="1.0" 
>>> xmlns="http://java.sun.com/xml/ns/persistence" 
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>>> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
>>> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
>>>    <persistence-unit name="StarjarEnterpriseOpenjpaPU">
>>>
>>>  
>>> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
>>>
>>> <!-- <jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source> -->
>>>  
>>> <jta-data-source>java:comp/env/jdbc/StarjarEnterprise5DS</jta-data-source> 
>>>
>>>
>>> <!-- snip class entries -->
>>>      <properties>
>>>        <property name="openjpa.Log" value="DefaultLevel=INFO,
>>> Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>
>>>
>>>        <property name="openjpa.AutoDetach" value="close, commit"/>
>>>        <!--property name="openjpa.DetachState" value="all"/-->
>>>        <property name="openjpa.DetachState" 
>>> value="loaded(DetachedStateField=false, DetachedStateManager=false)"/>
>>>
>>>        <!--property name="openjpa.AutoDetach" value="close"/-->
>>>
>>>        <!--<property name="openjpa.ConnectionDriverName" 
>>> value="org.postgresql.Driver"/> -->
>>>
>>>
>>>
>>>
>>> <!--
>>>        <property name="openjpa.ConnectionURL" 
>>> value="jdbc:hsqldb:tutorial_database"/>
>>>        <property name="openjpa.ConnectionDriverName" 
>>> value="org.hsqldb.jdbcDriver"/>
>>>        <property name="openjpa.ConnectionUserName" value="sa"/>
>>>        <property name="openjpa.ConnectionPassword" value=""/>
>>>        <property name="openjpa.Log" value="DefaultLevel=WARN, 
>>> Tool=INFO"/>
>>> -->
>>>      </properties>
>>>
>>>
>>>
>>>
>>>
>>> [5] The exception
>>> <openjpa-1.2.1-r752877:753278 fatal user error> 
>>> org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or 
>>> DataSource class name must be specified in the ConnectionDriverName 
>>> property.
>>>     at 
>>> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:74) 
>>>
>>>     at 
>>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784) 
>>>
>>>     at 
>>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:561) 
>>>
>>>     at 
>>> org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1265) 
>>>
>>>     at 
>>> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:505) 
>>>
>>>     at 
>>> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:430) 
>>>
>>>     at 
>>> org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:103) 
>>>
>>>     at 
>>> org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68) 
>>>
>>>     at 
>>> org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
>>>     at 
>>> org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:863) 
>>>
>>>     at 
>>> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:854) 
>>>
>>>     at 
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638) 
>>>
>>>     at 
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:183) 
>>>
>>>     at 
>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142) 
>>>
>>>     at 
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192) 
>>>
>>>     at 
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145) 
>>>
>>>     at 
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56) 
>>>
>>>     at 
>>> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.getEntityManager(EntityManagerServlet.java:119) 
>>>
>>>     at 
>>> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.initializeEntityManger(EntityManagerServlet.java:102) 
>>>
>>>     at 
>>> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.init(EntityManagerServlet.java:141) 
>>>
>>>     at 
>>> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172) 
>>>
>>>     at 
>>> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
>>>     at 
>>> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) 
>>>
>>>     at 
>>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371) 
>>>
>>>     at 
>>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
>>>
>>>     at 
>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>>>     at 
>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>>>     at 
>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>>>     at 
>>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>>>     at 
>>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>>>     at 
>>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>>>     at 
>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
>>>
>>>     at 
>>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
>>>
>>>     at 
>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>>>     at 
>>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>>>     at 
>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>>>     at 
>>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>>>     at 
>>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>>>     at 
>>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>>>     at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>     at 
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
>>>
>>>     at 
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
>>>
>>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>>     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>>>     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>> 17-May-2009 12:02:18 org.apache.catalina.core.StandardContext 
>>> loadOnStartup
>>>
>>>
>>>
>>>
>>>
>>
>> Hi Peter
>>
>> I think your problem may lie in the persistece.xml file the Connection
>> URL[1] either doesn't match properly or OpenJpa can't find the correct
>> jar file with the folder in.
>>
>> [1] http://hsqldb.org/web/hsqlDocsFrame.html
>>
>> David
>>
> 
> 


Re: OpenJPA on Tomcat

Posted by Håkon Sagehaug <Ha...@bccs.uib.no>.
hi

I have almost the same setup, but I set the properties for the persistent
xml in the code, here is my setup method for database connection using
openjpa, and a jndi data sourec from tomcat

                initCtx = new InitialContext();
                envCtx = (Context) initCtx.lookup("java:comp/env");
                ds = (DataSource) envCtx.lookup("jdbc/workflowdb");

                HashMap<String, Object> propMap = new HashMap<String,
Object>();

                propMap.put("openjpa.ConnectionFactory", ds);
                propMap.put("openjpa.ConnectionDriverName",
                        "javax.sql.DataSource");
                propMap.put("openjpa.jdbc.DBDictionary",
                        "org.apache.openjpa.jdbc.sql.PostgresDictionary");
                propMap.put("openjpa.Sequence",
                        "table(Table=OPENJPA_SEQUENCE_TABLE, Increment=3)");


Then I can get a entitymanager factory like this


                entityManagerFactory =
Persistence.createEntityManagerFactory(
                        "persistentname", propMap);

Hope this can be of help.

cheers, Håkon

2009/5/17 David Beer <da...@googlemail.com>

> Hi Peter
>
> Having looked at the exception you are getting and the your newly
> posted persistence.xml file it seems that you might need to specify
> the connection driver to be used.
>
> I have only used OpenJPA for embeded applications rather than web
> applications. But I would have thought that you would still need to
> supply the driver. I also know that you need supply certain
> libraries for JPA to work with Tomcat.
>
> Sorry can't be much more help.
>
> David
>
> On Sun, 17 May 2009 14:53:41
> +0100 Peter Henderson <pe...@starjar.com> wrote:
>
> > David,
> >
> > Thanks for helping, although I don't think this issue is
> > HSQLDB related. The persisence.xml file i posted had those
> > items commented out. I've attached a cleaned up version [1]
> >
> > Cheers
> >
> > Peter.
> >
> >
> > [1] persistence.xml
> >
> > <?xml version="1.0"?>
> > <persistence version="1.0"
> > xmlns="http://java.sun.com/xml/ns/persistence"
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
> > http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
> >    <persistence-unit name="StarjarEnterpriseOpenjpaPU">
> >
> >
> >
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> >
> > <jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source>
> >
> >
> > <class>com.starjar.starjarenterprise5.domain.AccountCategory</class>
> >      <exclude-unlisted-classes>true</exclude-unlisted-classes>
> >
> >      <properties>
> >        <property name="openjpa.Log" value="DefaultLevel=INFO,
> > Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>
> >
> >        <property name="openjpa.AutoDetach" value="close,
> > commit"/>
> >        <property name="openjpa.DetachState"
> > value="loaded(DetachedStateField=false,
> > DetachedStateManager=false)"/>
> >      </properties>
> >    </persistence-unit>
> > </persistence>
> >
> >
> >
> >
> > David Beer wrote:
> > > On Sun, 17 May 2009 12:19:19 +0100
> > > Peter Henderson <pe...@starjar.com> wrote:
> > >
> > >> I am having some problems getting OpenJPA to work under
> > >> tomcat 6.0.18.
> > >>
> > >> I've created a data source in tomcat/conf/context.xml [1]
> > >> Referenced the data source in my web.xml [2]
> > >> Tested using the data source in a servlet at start up [3]
> > >> which should prove my data source has been configured correctly.
> > >>
> > >> Yet when I try to initialize an entity manager factor using
> > >> my persistence.xml[4] I get an exception [5]
> > >>
> > >>
> > >> So what have I missed?
> > >>
> > >>
> > >> Peter.
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> > >> [1] tomcat/conf/context.xml
> > >>
> > >> <Context>
> > >>
> > >>      <!-- Default set of monitored resources -->
> > >>      <WatchedResource>WEB-INF/web.xml</WatchedResource>
> > >>
> > >>
> > >>
> > >>      <Resource name="jdbc/StarjarEnterprise5DS" auth="Container"
> > >>              type="javax.sql.DataSource"
> > >> driverClassName="org.postgresql.Driver"
> > >>              url="jdbc:postgresql://127.0.0.1:5432/mydb"
> > >>              username="user" password="password"
> > >> maxActive="20" maxIdle="10" maxWait="-1"/>
> > >>
> > >>
> > >> </Context>
> > >>
> > >>
> > >>
> > >> [2] web.xml
> > >> <web-app version="2.5"
> > >> xmlns="http://java.sun.com/xml/ns/javaee"
> > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > >> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> > >> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
> > >>
> > >>
> > >>      <display-name>Starjar Enterprise</display-name>
> > >>
> > >>     <!-- servlet and mappings here -->
> > >>
> > >>    <resource-ref>
> > >>        <description>Starjar Datasouce Connection</description>
> > >>        <res-ref-name>jdbc/StarjarEnterprise5DS</res-ref-name>
> > >>        <res-type>javax.sql.DataSource</res-type>
> > >>        <res-auth>Container</res-auth>
> > >>    </resource-ref>
> > >>
> > >> </web-app>
> > >>
> > >>
> > >>
> > >> [3] Test code
> > >> Context initCtx = null; Context envCtx;
> > >>
> > >> DataSource ds = null;
> > >> try {
> > >>      initCtx = new InitialContext();
> > >>      envCtx = (Context) initCtx.lookup("java:comp/env");
> > >>      ds = (DataSource)
> > >> envCtx.lookup("jdbc/StarjarEnterprise5DS");
> > >>      System.out.println("Got DATA SOURCE VIA " + ds);
> > >>      log.error("++++++++++++Got DATA SOURCE VIA JNDI " + ds);
> > >>
> > >>      // Test out the datasource.
> > >>      Connection con = ds.getConnection();
> > >>      //PreparedStatement ps = con.prepareStatement("SELECT
> > >> 'Hello World'");
> > >>      PreparedStatement ps = con.prepareStatement("SELECT *
> > >> from organization");
> > >>      ResultSet rs = ps.executeQuery();
> > >>      while (rs.next()) {
> > >>          String msg = rs.getString(1);
> > >>          log.info("Ran query got message " + msg);
> > >>      }
> > >>      rs.close();
> > >>      ps.close();
> > >>      con.close();
> > >>
> > >>
> > >> } catch (Exception ex) {
> > >>      log.error("+++++++++++++++++++++Did not get DS", ex);
> > >>      ex.printStackTrace();
> > >> }
> > >>
> > >>
> > >>
> > >>
> > >> [4] My persistence.xml
> > >> <?xml version="1.0"?>
> > >> <persistence version="1.0"
> > >> xmlns="http://java.sun.com/xml/ns/persistence"
> > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > >> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
> > >> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
> > >>    <persistence-unit name="StarjarEnterpriseOpenjpaPU">
> > >>
> > >>
> > >>
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> > >> <!--
> > >> <jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source> -->
> > >>
> > >>
> <jta-data-source>java:comp/env/jdbc/StarjarEnterprise5DS</jta-data-source>
> > >>
> > >> <!-- snip class entries -->
> > >>      <properties>
> > >>        <property name="openjpa.Log" value="DefaultLevel=INFO,
> > >> Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>
> > >>
> > >>        <property name="openjpa.AutoDetach" value="close,
> > >> commit"/>
> > >>        <!--property name="openjpa.DetachState" value="all"/-->
> > >>        <property name="openjpa.DetachState"
> > >> value="loaded(DetachedStateField=false,
> > >> DetachedStateManager=false)"/>
> > >>
> > >>        <!--property name="openjpa.AutoDetach" value="close"/-->
> > >>
> > >>        <!--<property name="openjpa.ConnectionDriverName"
> > >> value="org.postgresql.Driver"/> -->
> > >>
> > >>
> > >>
> > >>
> > >> <!--
> > >>        <property name="openjpa.ConnectionURL"
> > >> value="jdbc:hsqldb:tutorial_database"/>
> > >>        <property name="openjpa.ConnectionDriverName"
> > >> value="org.hsqldb.jdbcDriver"/>
> > >>        <property name="openjpa.ConnectionUserName" value="sa"/>
> > >>        <property name="openjpa.ConnectionPassword" value=""/>
> > >>        <property name="openjpa.Log"
> > >> value="DefaultLevel=WARN, Tool=INFO"/>
> > >> -->
> > >>      </properties>
> > >>
> > >>
> > >>
> > >>
> > >>
> > >> [5] The exception
> > >> <openjpa-1.2.1-r752877:753278 fatal user error>
> > >> org.apache.openjpa.persistence.ArgumentException: A JDBC
> > >> Driver or DataSource class name must be specified in the
> > >> ConnectionDriverName property.
> > >>    at
> > >>
> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:74)
> > >>    at
> > >>
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784)
> > >>    at
> > >>
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:561)
> > >>    at
> > >>
> org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1265)
> > >>    at
> > >>
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:505)
> > >>    at
> > >>
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:430)
> > >>    at
> > >>
> org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:103)
> > >>    at
> > >>
> org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
> > >>    at
> > >>
> org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
> > >>    at
> > >>
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:863)
> > >>    at
> > >>
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:854)
> > >>    at
> > >>
> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
> > >>    at
> > >>
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:183)
> > >>    at
> > >>
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
> > >>    at
> > >>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
> > >>    at
> > >>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> > >>    at
> > >>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
> > >>    at
> > >>
> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.getEntityManager(EntityManagerServlet.java:119)
> > >>    at
> > >>
> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.initializeEntityManger(EntityManagerServlet.java:102)
> > >>    at
> > >>
> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.init(EntityManagerServlet.java:141)
> > >>    at
> > >>
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
> > >>    at
> > >>
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
> > >>    at
> > >>
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
> > >>    at
> > >>
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
> > >>    at
> > >>
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> > >>    at
> > >>
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> > >>    at
> > >> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
> > >>    at
> > >> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
> > >>    at
> > >> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
> > >>    at
> > >> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
> > >>    at
> > >> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
> > >>    at
> > >>
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
> > >>    at
> > >>
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> > >>    at
> > >> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
> > >>    at
> > >> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
> > >>    at
> > >> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> > >>    at
> > >> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> > >>    at
> > >>
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
> > >>    at
> > >> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
> > >>    at
> > >> org.apache.catalina.startup.Catalina.start(Catalina.java:578)
> > >>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > >> Method) at
> > >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > >>    at
> > >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > >>    at java.lang.reflect.Method.invoke(Method.java:597)
> > >>    at
> > >> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
> > >>    at
> > >> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> > >> 17-May-2009 12:02:18
> > >> org.apache.catalina.core.StandardContext loadOnStartup
> > >>
> > >>
> > >>
> > >>
> > >>
> > >
> > > Hi Peter
> > >
> > > I think your problem may lie in the persistece.xml file the
> > > Connection URL[1] either doesn't match properly or OpenJpa can't
> > > find the correct jar file with the folder in.
> > >
> > > [1] http://hsqldb.org/web/hsqlDocsFrame.html
> > >
> > > David
> > >
> >
> >
>
>


-- 
Håkon Sagehaug, Scientific Programmer
Parallab, Bergen Center for Computational Science (BCCS)
UNIFOB AS (University of Bergen Research Company)

Re: OpenJPA on Tomcat

Posted by David Beer <da...@googlemail.com>.
Hi Peter

Having looked at the exception you are getting and the your newly
posted persistence.xml file it seems that you might need to specify
the connection driver to be used. 

I have only used OpenJPA for embeded applications rather than web
applications. But I would have thought that you would still need to
supply the driver. I also know that you need supply certain
libraries for JPA to work with Tomcat.

Sorry can't be much more help.

David

On Sun, 17 May 2009 14:53:41
+0100 Peter Henderson <pe...@starjar.com> wrote:

> David,
> 
> Thanks for helping, although I don't think this issue is 
> HSQLDB related. The persisence.xml file i posted had those 
> items commented out. I've attached a cleaned up version [1]
> 
> Cheers
> 
> Peter.
> 
> 
> [1] persistence.xml
> 
> <?xml version="1.0"?>
> <persistence version="1.0" 
> xmlns="http://java.sun.com/xml/ns/persistence" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
>    <persistence-unit name="StarjarEnterpriseOpenjpaPU">
> 
>  
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>  
> <jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source>
> 
>  
> <class>com.starjar.starjarenterprise5.domain.AccountCategory</class>
>      <exclude-unlisted-classes>true</exclude-unlisted-classes>
> 
>      <properties>
>        <property name="openjpa.Log" value="DefaultLevel=INFO,
> Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>
> 
>        <property name="openjpa.AutoDetach" value="close, 
> commit"/>
>        <property name="openjpa.DetachState" 
> value="loaded(DetachedStateField=false, 
> DetachedStateManager=false)"/>
>      </properties>
>    </persistence-unit>
> </persistence>
> 
> 
> 
> 
> David Beer wrote:
> > On Sun, 17 May 2009 12:19:19 +0100
> > Peter Henderson <pe...@starjar.com> wrote:
> > 
> >> I am having some problems getting OpenJPA to work under 
> >> tomcat 6.0.18.
> >>
> >> I've created a data source in tomcat/conf/context.xml [1]
> >> Referenced the data source in my web.xml [2]
> >> Tested using the data source in a servlet at start up [3] 
> >> which should prove my data source has been configured correctly.
> >>
> >> Yet when I try to initialize an entity manager factor using 
> >> my persistence.xml[4] I get an exception [5]
> >>
> >>
> >> So what have I missed?
> >>
> >>
> >> Peter.
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> [1] tomcat/conf/context.xml
> >>
> >> <Context>
> >>
> >>      <!-- Default set of monitored resources -->
> >>      <WatchedResource>WEB-INF/web.xml</WatchedResource>
> >> 	
> >>
> >>
> >>      <Resource name="jdbc/StarjarEnterprise5DS" auth="Container"
> >> 		  type="javax.sql.DataSource" 
> >> driverClassName="org.postgresql.Driver"
> >> 		  url="jdbc:postgresql://127.0.0.1:5432/mydb"
> >> 		  username="user" password="password"
> >> maxActive="20" maxIdle="10" maxWait="-1"/>
> >>
> >>
> >> </Context>
> >>
> >>
> >>
> >> [2] web.xml
> >> <web-app version="2.5" 
> >> xmlns="http://java.sun.com/xml/ns/javaee" 
> >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> >> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
> >> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
> >>
> >>
> >>      <display-name>Starjar Enterprise</display-name>
> >>
> >>     <!-- servlet and mappings here -->
> >>
> >>    <resource-ref>
> >>        <description>Starjar Datasouce Connection</description>
> >>        <res-ref-name>jdbc/StarjarEnterprise5DS</res-ref-name>
> >>        <res-type>javax.sql.DataSource</res-type>
> >>        <res-auth>Container</res-auth>
> >>    </resource-ref>
> >>
> >> </web-app>
> >>
> >>
> >>
> >> [3] Test code
> >> Context initCtx = null; Context envCtx;
> >>
> >> DataSource ds = null;
> >> try {
> >>      initCtx = new InitialContext();
> >>      envCtx = (Context) initCtx.lookup("java:comp/env");
> >>      ds = (DataSource) 
> >> envCtx.lookup("jdbc/StarjarEnterprise5DS");
> >>      System.out.println("Got DATA SOURCE VIA " + ds);
> >>      log.error("++++++++++++Got DATA SOURCE VIA JNDI " + ds);
> >>
> >>      // Test out the datasource.
> >>      Connection con = ds.getConnection();
> >>      //PreparedStatement ps = con.prepareStatement("SELECT 
> >> 'Hello World'");
> >>      PreparedStatement ps = con.prepareStatement("SELECT * 
> >> from organization");
> >>      ResultSet rs = ps.executeQuery();
> >>      while (rs.next()) {
> >>          String msg = rs.getString(1);
> >>          log.info("Ran query got message " + msg);
> >>      }
> >>      rs.close();
> >>      ps.close();
> >>      con.close();
> >>
> >>
> >> } catch (Exception ex) {
> >>      log.error("+++++++++++++++++++++Did not get DS", ex);
> >>      ex.printStackTrace();
> >> }
> >>
> >>
> >>
> >>
> >> [4] My persistence.xml
> >> <?xml version="1.0"?>
> >> <persistence version="1.0" 
> >> xmlns="http://java.sun.com/xml/ns/persistence" 
> >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> >> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
> >> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
> >>    <persistence-unit name="StarjarEnterpriseOpenjpaPU">
> >>
> >>  
> >> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> >> <!-- 
> >> <jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source> -->
> >>  
> >> <jta-data-source>java:comp/env/jdbc/StarjarEnterprise5DS</jta-data-source>
> >>
> >> <!-- snip class entries -->
> >>      <properties>
> >>        <property name="openjpa.Log" value="DefaultLevel=INFO,
> >> Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>
> >>
> >>        <property name="openjpa.AutoDetach" value="close, 
> >> commit"/>
> >>        <!--property name="openjpa.DetachState" value="all"/-->
> >>        <property name="openjpa.DetachState" 
> >> value="loaded(DetachedStateField=false, 
> >> DetachedStateManager=false)"/>
> >>
> >>        <!--property name="openjpa.AutoDetach" value="close"/-->
> >>
> >>        <!--<property name="openjpa.ConnectionDriverName" 
> >> value="org.postgresql.Driver"/> -->
> >>
> >>
> >>
> >>
> >> <!--
> >>        <property name="openjpa.ConnectionURL" 
> >> value="jdbc:hsqldb:tutorial_database"/>
> >>        <property name="openjpa.ConnectionDriverName" 
> >> value="org.hsqldb.jdbcDriver"/>
> >>        <property name="openjpa.ConnectionUserName" value="sa"/>
> >>        <property name="openjpa.ConnectionPassword" value=""/>
> >>        <property name="openjpa.Log" 
> >> value="DefaultLevel=WARN, Tool=INFO"/>
> >> -->
> >>      </properties>
> >>
> >>
> >>
> >>
> >>
> >> [5] The exception
> >> <openjpa-1.2.1-r752877:753278 fatal user error> 
> >> org.apache.openjpa.persistence.ArgumentException: A JDBC 
> >> Driver or DataSource class name must be specified in the 
> >> ConnectionDriverName property.
> >> 	at 
> >> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:74)
> >> 	at 
> >> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784)
> >> 	at 
> >> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:561)
> >> 	at 
> >> org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1265)
> >> 	at 
> >> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:505)
> >> 	at 
> >> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:430)
> >> 	at 
> >> org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:103)
> >> 	at 
> >> org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
> >> 	at 
> >> org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
> >> 	at 
> >> org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:863)
> >> 	at 
> >> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:854)
> >> 	at 
> >> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
> >> 	at 
> >> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:183)
> >> 	at 
> >> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
> >> 	at 
> >> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
> >> 	at 
> >> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> >> 	at 
> >> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
> >> 	at 
> >> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.getEntityManager(EntityManagerServlet.java:119)
> >> 	at 
> >> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.initializeEntityManger(EntityManagerServlet.java:102)
> >> 	at 
> >> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.init(EntityManagerServlet.java:141)
> >> 	at 
> >> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
> >> 	at 
> >> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
> >> 	at 
> >> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
> >> 	at 
> >> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
> >> 	at 
> >> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> >> 	at 
> >> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> >> 	at 
> >> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
> >> 	at 
> >> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
> >> 	at 
> >> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
> >> 	at 
> >> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
> >> 	at 
> >> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
> >> 	at 
> >> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
> >> 	at 
> >> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> >> 	at 
> >> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
> >> 	at 
> >> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
> >> 	at 
> >> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> >> 	at 
> >> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> >> 	at 
> >> org.apache.catalina.core.StandardService.start(StandardService.java:516)
> >> 	at 
> >> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
> >> 	at 
> >> org.apache.catalina.startup.Catalina.start(Catalina.java:578)
> >> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >> Method) at 
> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >> 	at 
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >> 	at java.lang.reflect.Method.invoke(Method.java:597)
> >> 	at 
> >> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
> >> 	at 
> >> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> >> 17-May-2009 12:02:18 
> >> org.apache.catalina.core.StandardContext loadOnStartup
> >>
> >>
> >>
> >>
> >>
> > 
> > Hi Peter
> > 
> > I think your problem may lie in the persistece.xml file the
> > Connection URL[1] either doesn't match properly or OpenJpa can't
> > find the correct jar file with the folder in.
> > 
> > [1] http://hsqldb.org/web/hsqlDocsFrame.html
> > 
> > David
> > 
> 
> 


Re: OpenJPA on Tomcat

Posted by Peter Henderson <pe...@starjar.com>.
David,

Thanks for helping, although I don't think this issue is 
HSQLDB related. The persisence.xml file i posted had those 
items commented out. I've attached a cleaned up version [1]

Cheers

Peter.


[1] persistence.xml

<?xml version="1.0"?>
<persistence version="1.0" 
xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
   <persistence-unit name="StarjarEnterpriseOpenjpaPU">

 
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
 
<jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source>

 
<class>com.starjar.starjarenterprise5.domain.AccountCategory</class>
     <exclude-unlisted-classes>true</exclude-unlisted-classes>

     <properties>
       <property name="openjpa.Log" value="DefaultLevel=INFO,
Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>

       <property name="openjpa.AutoDetach" value="close, 
commit"/>
       <property name="openjpa.DetachState" 
value="loaded(DetachedStateField=false, 
DetachedStateManager=false)"/>
     </properties>
   </persistence-unit>
</persistence>




David Beer wrote:
> On Sun, 17 May 2009 12:19:19 +0100
> Peter Henderson <pe...@starjar.com> wrote:
> 
>> I am having some problems getting OpenJPA to work under 
>> tomcat 6.0.18.
>>
>> I've created a data source in tomcat/conf/context.xml [1]
>> Referenced the data source in my web.xml [2]
>> Tested using the data source in a servlet at start up [3] 
>> which should prove my data source has been configured correctly.
>>
>> Yet when I try to initialize an entity manager factor using 
>> my persistence.xml[4] I get an exception [5]
>>
>>
>> So what have I missed?
>>
>>
>> Peter.
>>
>>
>>
>>
>>
>>
>>
>>
>> [1] tomcat/conf/context.xml
>>
>> <Context>
>>
>>      <!-- Default set of monitored resources -->
>>      <WatchedResource>WEB-INF/web.xml</WatchedResource>
>> 	
>>
>>
>>      <Resource name="jdbc/StarjarEnterprise5DS" auth="Container"
>> 		  type="javax.sql.DataSource" 
>> driverClassName="org.postgresql.Driver"
>> 		  url="jdbc:postgresql://127.0.0.1:5432/mydb"
>> 		  username="user" password="password" maxActive="20" 
>> maxIdle="10" maxWait="-1"/>
>>
>>
>> </Context>
>>
>>
>>
>> [2] web.xml
>> <web-app version="2.5" 
>> xmlns="http://java.sun.com/xml/ns/javaee" 
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
>> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
>>
>>
>>      <display-name>Starjar Enterprise</display-name>
>>
>>     <!-- servlet and mappings here -->
>>
>>    <resource-ref>
>>        <description>Starjar Datasouce Connection</description>
>>        <res-ref-name>jdbc/StarjarEnterprise5DS</res-ref-name>
>>        <res-type>javax.sql.DataSource</res-type>
>>        <res-auth>Container</res-auth>
>>    </resource-ref>
>>
>> </web-app>
>>
>>
>>
>> [3] Test code
>> Context initCtx = null; Context envCtx;
>>
>> DataSource ds = null;
>> try {
>>      initCtx = new InitialContext();
>>      envCtx = (Context) initCtx.lookup("java:comp/env");
>>      ds = (DataSource) 
>> envCtx.lookup("jdbc/StarjarEnterprise5DS");
>>      System.out.println("Got DATA SOURCE VIA " + ds);
>>      log.error("++++++++++++Got DATA SOURCE VIA JNDI " + ds);
>>
>>      // Test out the datasource.
>>      Connection con = ds.getConnection();
>>      //PreparedStatement ps = con.prepareStatement("SELECT 
>> 'Hello World'");
>>      PreparedStatement ps = con.prepareStatement("SELECT * 
>> from organization");
>>      ResultSet rs = ps.executeQuery();
>>      while (rs.next()) {
>>          String msg = rs.getString(1);
>>          log.info("Ran query got message " + msg);
>>      }
>>      rs.close();
>>      ps.close();
>>      con.close();
>>
>>
>> } catch (Exception ex) {
>>      log.error("+++++++++++++++++++++Did not get DS", ex);
>>      ex.printStackTrace();
>> }
>>
>>
>>
>>
>> [4] My persistence.xml
>> <?xml version="1.0"?>
>> <persistence version="1.0" 
>> xmlns="http://java.sun.com/xml/ns/persistence" 
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
>> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
>>    <persistence-unit name="StarjarEnterpriseOpenjpaPU">
>>
>>  
>> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>> <!-- 
>> <jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source> -->
>>  
>> <jta-data-source>java:comp/env/jdbc/StarjarEnterprise5DS</jta-data-source>
>>
>> <!-- snip class entries -->
>>      <properties>
>>        <property name="openjpa.Log" value="DefaultLevel=INFO,
>> Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>
>>
>>        <property name="openjpa.AutoDetach" value="close, 
>> commit"/>
>>        <!--property name="openjpa.DetachState" value="all"/-->
>>        <property name="openjpa.DetachState" 
>> value="loaded(DetachedStateField=false, 
>> DetachedStateManager=false)"/>
>>
>>        <!--property name="openjpa.AutoDetach" value="close"/-->
>>
>>        <!--<property name="openjpa.ConnectionDriverName" 
>> value="org.postgresql.Driver"/> -->
>>
>>
>>
>>
>> <!--
>>        <property name="openjpa.ConnectionURL" 
>> value="jdbc:hsqldb:tutorial_database"/>
>>        <property name="openjpa.ConnectionDriverName" 
>> value="org.hsqldb.jdbcDriver"/>
>>        <property name="openjpa.ConnectionUserName" value="sa"/>
>>        <property name="openjpa.ConnectionPassword" value=""/>
>>        <property name="openjpa.Log" 
>> value="DefaultLevel=WARN, Tool=INFO"/>
>> -->
>>      </properties>
>>
>>
>>
>>
>>
>> [5] The exception
>> <openjpa-1.2.1-r752877:753278 fatal user error> 
>> org.apache.openjpa.persistence.ArgumentException: A JDBC 
>> Driver or DataSource class name must be specified in the 
>> ConnectionDriverName property.
>> 	at 
>> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:74)
>> 	at 
>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784)
>> 	at 
>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:561)
>> 	at 
>> org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1265)
>> 	at 
>> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:505)
>> 	at 
>> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:430)
>> 	at 
>> org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:103)
>> 	at 
>> org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
>> 	at 
>> org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
>> 	at 
>> org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:863)
>> 	at 
>> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:854)
>> 	at 
>> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
>> 	at 
>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:183)
>> 	at 
>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>> 	at 
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>> 	at 
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
>> 	at 
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
>> 	at 
>> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.getEntityManager(EntityManagerServlet.java:119)
>> 	at 
>> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.initializeEntityManger(EntityManagerServlet.java:102)
>> 	at 
>> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.init(EntityManagerServlet.java:141)
>> 	at 
>> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
>> 	at 
>> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
>> 	at 
>> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
>> 	at 
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
>> 	at 
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>> 	at 
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>> 	at 
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>> 	at 
>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
>> 	at 
>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
>> 	at 
>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
>> 	at 
>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>> 	at 
>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>> 	at 
>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>> 	at 
>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>> 	at 
>> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>> 	at 
>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>> 	at 
>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>> 	at 
>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>> 	at 
>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>> 	at 
>> org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> 	at 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> 	at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> 	at java.lang.reflect.Method.invoke(Method.java:597)
>> 	at 
>> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>> 	at 
>> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>> 17-May-2009 12:02:18 
>> org.apache.catalina.core.StandardContext loadOnStartup
>>
>>
>>
>>
>>
> 
> Hi Peter
> 
> I think your problem may lie in the persistece.xml file the Connection
> URL[1] either doesn't match properly or OpenJpa can't find the correct
> jar file with the folder in.
> 
> [1] http://hsqldb.org/web/hsqlDocsFrame.html
> 
> David
> 


-- 
Peter Henderson
Director Starjar Limited.

Mobile: +44 (0) 778 233 8645
Email: peter.henderson@starjar.com
Web: www.starjar.com


Re: OpenJPA on Tomcat

Posted by David Beer <da...@googlemail.com>.
On Sun, 17 May 2009 12:19:19 +0100
Peter Henderson <pe...@starjar.com> wrote:

> 
> I am having some problems getting OpenJPA to work under 
> tomcat 6.0.18.
> 
> I've created a data source in tomcat/conf/context.xml [1]
> Referenced the data source in my web.xml [2]
> Tested using the data source in a servlet at start up [3] 
> which should prove my data source has been configured correctly.
> 
> Yet when I try to initialize an entity manager factor using 
> my persistence.xml[4] I get an exception [5]
> 
> 
> So what have I missed?
> 
> 
> Peter.
> 
> 
> 
> 
> 
> 
> 
> 
> [1] tomcat/conf/context.xml
> 
> <Context>
> 
>      <!-- Default set of monitored resources -->
>      <WatchedResource>WEB-INF/web.xml</WatchedResource>
> 	
> 
> 
>      <Resource name="jdbc/StarjarEnterprise5DS" auth="Container"
> 		  type="javax.sql.DataSource" 
> driverClassName="org.postgresql.Driver"
> 		  url="jdbc:postgresql://127.0.0.1:5432/mydb"
> 		  username="user" password="password" maxActive="20" 
> maxIdle="10" maxWait="-1"/>
> 
> 
> </Context>
> 
> 
> 
> [2] web.xml
> <web-app version="2.5" 
> xmlns="http://java.sun.com/xml/ns/javaee" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
> 
> 
>      <display-name>Starjar Enterprise</display-name>
> 
>     <!-- servlet and mappings here -->
> 
>    <resource-ref>
>        <description>Starjar Datasouce Connection</description>
>        <res-ref-name>jdbc/StarjarEnterprise5DS</res-ref-name>
>        <res-type>javax.sql.DataSource</res-type>
>        <res-auth>Container</res-auth>
>    </resource-ref>
> 
> </web-app>
> 
> 
> 
> [3] Test code
> Context initCtx = null; Context envCtx;
> 
> DataSource ds = null;
> try {
>      initCtx = new InitialContext();
>      envCtx = (Context) initCtx.lookup("java:comp/env");
>      ds = (DataSource) 
> envCtx.lookup("jdbc/StarjarEnterprise5DS");
>      System.out.println("Got DATA SOURCE VIA " + ds);
>      log.error("++++++++++++Got DATA SOURCE VIA JNDI " + ds);
> 
>      // Test out the datasource.
>      Connection con = ds.getConnection();
>      //PreparedStatement ps = con.prepareStatement("SELECT 
> 'Hello World'");
>      PreparedStatement ps = con.prepareStatement("SELECT * 
> from organization");
>      ResultSet rs = ps.executeQuery();
>      while (rs.next()) {
>          String msg = rs.getString(1);
>          log.info("Ran query got message " + msg);
>      }
>      rs.close();
>      ps.close();
>      con.close();
> 
> 
> } catch (Exception ex) {
>      log.error("+++++++++++++++++++++Did not get DS", ex);
>      ex.printStackTrace();
> }
> 
> 
> 
> 
> [4] My persistence.xml
> <?xml version="1.0"?>
> <persistence version="1.0" 
> xmlns="http://java.sun.com/xml/ns/persistence" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
>    <persistence-unit name="StarjarEnterpriseOpenjpaPU">
> 
>  
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> <!-- 
> <jta-data-source>jdbc/StarjarEnterprise5DS</jta-data-source> -->
>  
> <jta-data-source>java:comp/env/jdbc/StarjarEnterprise5DS</jta-data-source>
> 
> <!-- snip class entries -->
>      <properties>
>        <property name="openjpa.Log" value="DefaultLevel=INFO,
> Runtime=ERROR, Tool=ERROR, SQL=ERROR, DataCache=ERROR"/>
> 
>        <property name="openjpa.AutoDetach" value="close, 
> commit"/>
>        <!--property name="openjpa.DetachState" value="all"/-->
>        <property name="openjpa.DetachState" 
> value="loaded(DetachedStateField=false, 
> DetachedStateManager=false)"/>
> 
>        <!--property name="openjpa.AutoDetach" value="close"/-->
> 
>        <!--<property name="openjpa.ConnectionDriverName" 
> value="org.postgresql.Driver"/> -->
> 
> 
> 
> 
> <!--
>        <property name="openjpa.ConnectionURL" 
> value="jdbc:hsqldb:tutorial_database"/>
>        <property name="openjpa.ConnectionDriverName" 
> value="org.hsqldb.jdbcDriver"/>
>        <property name="openjpa.ConnectionUserName" value="sa"/>
>        <property name="openjpa.ConnectionPassword" value=""/>
>        <property name="openjpa.Log" 
> value="DefaultLevel=WARN, Tool=INFO"/>
> -->
>      </properties>
> 
> 
> 
> 
> 
> [5] The exception
> <openjpa-1.2.1-r752877:753278 fatal user error> 
> org.apache.openjpa.persistence.ArgumentException: A JDBC 
> Driver or DataSource class name must be specified in the 
> ConnectionDriverName property.
> 	at 
> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:74)
> 	at 
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784)
> 	at 
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:561)
> 	at 
> org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1265)
> 	at 
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:505)
> 	at 
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:430)
> 	at 
> org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:103)
> 	at 
> org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
> 	at 
> org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
> 	at 
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:863)
> 	at 
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:854)
> 	at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
> 	at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:183)
> 	at 
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
> 	at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
> 	at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
> 	at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
> 	at 
> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.getEntityManager(EntityManagerServlet.java:119)
> 	at 
> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.initializeEntityManger(EntityManagerServlet.java:102)
> 	at 
> com.starjar.starjarenterprise5.remote_impl.EntityManagerServlet.init(EntityManagerServlet.java:141)
> 	at 
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
> 	at 
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
> 	at 
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
> 	at 
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
> 	at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> 	at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> 	at 
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
> 	at 
> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
> 	at 
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
> 	at 
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
> 	at 
> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
> 	at 
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
> 	at 
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
> 	at 
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
> 	at 
> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
> 	at 
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> 	at 
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> 	at 
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
> 	at 
> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
> 	at 
> org.apache.catalina.startup.Catalina.start(Catalina.java:578)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at 
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
> 	at 
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> 17-May-2009 12:02:18 
> org.apache.catalina.core.StandardContext loadOnStartup
> 
> 
> 
> 
> 

Hi Peter

I think your problem may lie in the persistece.xml file the Connection
URL[1] either doesn't match properly or OpenJpa can't find the correct
jar file with the folder in.

[1] http://hsqldb.org/web/hsqlDocsFrame.html

David