Hi Filip, I found the problem. It had to do with how a datasource is retrieved from the data context.
I found this out after digging in the source code of Hibernate. It seems, like when I wrote a simple servlet to get a connection like this: String datasourceName = "jdbc/workout_logger" Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup(datasourceName); Connection conn = ds.getConnection(); Everything worked great. However, the Hibernate people try to retrieve the datasource similar to this: String datasourceName = "jdbc/workout_logger" DataSource ds = (DataSource)new InitialContext().lookup(datasourceName); Then when I changed my datasource name from my persistence.xml to "java:/comp/env/jdbc/workout_logger", then everything started working fine. Note that in server.xml the resource is still called "jdbc/workout_logger" I guess what really threw me off was that having the datasource in persistence.xml as "jdbc/workout_logger" worked fine in Glassfish. So I don't know if Glassfish's implementation tries to find Datasources by the provided lookup name, and if that fails, maybe try again by prepending "java:/comp/env/" or something. Thanks for the help though. Arturo Guedez However, in their It seems like when using Glassfish, when you make a call to " Filip Hanik - Dev Lists wrote: > > check the logs earlier, if you havent moved the mysql-xxx.jar into > TC_HOME/lib, then tomcat can't create the connection pool, and the JDBC > name will not exist > > Filip > > arturoguedez wrote: >> The error hasn't actually changed from the one I posted originally. Is >> there >> any way of changing Tomcat's logging to display more information? I know >> there is a reference to a Ejb3Configuration.buildEntityManagerFactory but >> i >> am not actually using EJB3's. I am just using the >> EntityManagers/EntityManagerFactory that uses config from >> persistence.xml, a >> file in which you can tell it what datasource to make your persistence >> unit >> to use. I tell it to use "jdbc/workout_logger". >> >> I guess I can try writing a simple Servlet that tries to get the context >> using the example in Tomcat's docs. I just thought that in the end, all >> ways >> call the same InitialContext.lookup method. >> >> Arturo >> >> - I have copied the same stacktrace that I am getting. It's almost as if >> the >> config changes haven't done anything. Just to make sure that it's loading >> the files, I tried to start tomcat with a "broken" xml and it fails to >> start, so I know that it's loading the right config files. >> >> 1 17:32:17 ERROR ceConnectionProvider: Could not find datasource: >> jdbc/workout_logger >> javax.naming.NameNotFoundException: Name jdbc is not bound in this >> Context >> at org.apache.naming.NamingContext.lookup(NamingContext.java:770) >> at org.apache.naming.NamingContext.lookup(NamingContext.java:153) >> at org.apache.naming.SelectorContext.lookup(SelectorContext.java:137) >> at javax.naming.InitialContext.lookup(InitialContext.java:392) >> at >> >> org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75) >> >> at >> >> org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137) >> >> at >> >> org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29) >> >> at >> org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89) >> at >> org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101) >> at >> >> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325) >> at >> >> org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) >> >> at >> >> org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) >> >> at >> >> org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126) >> >> at >> >> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52) >> .... >> >> >> Filip Hanik - Dev Lists wrote: >> >>> post the actual error you see with the new config >>> >>> arturoguedez wrote: >>> >>>> Thanks for the help. I just tried it and it still does work. >>>> >>>> Here is the exact content of my current server.xml and my context.xml >>>> >>>> Server.xml: >>>> >>>> <?xml version='1.0' encoding='utf-8'?> >>>> <Server port="8005" shutdown="SHUTDOWN"> >>>> >>>> <Listener className="org.apache.catalina.core.AprLifecycleListener" >>>> SSLEngine="on" /> >>>> <Listener className="org.apache.catalina.core.JasperListener" /> >>>> <Listener >>>> className="org.apache.catalina.mbeans.ServerLifecycleListener" >>>> /> >>>> <Listener >>>> className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" >>>> /> >>>> >>>> <GlobalNamingResources> >>>> <Resource name="UserDatabase" auth="Container" >>>> type="org.apache.catalina.UserDatabase" >>>> description="User database that can be updated and saved" >>>> >>>> factory="org.apache.catalina.users.MemoryUserDatabaseFactory" >>>> pathname="conf/tomcat-users.xml" /> >>>> >>>> <Resource name="jdbc/workout_logger" auth="Container" >>>> type="javax.sql.DataSource" >>>> maxActive="100" maxIdle="30" maxWait="10000" >>>> username="user" password="password" >>>> driverClassName="com.mysql.jdbc.Driver" >>>> >>>> url="jdbc:mysql://localhost:3306/workout_logging?autoReconnect=true"/> >>>> >>>> </GlobalNamingResources> >>>> >>>> <Service name="Catalina"> >>>> <Connector port="8080" protocol="HTTP/1.1" >>>> connectionTimeout="20000" >>>> redirectPort="8443" /> >>>> >>>> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> >>>> >>>> <Engine name="Catalina" defaultHost="localhost"> >>>> >>>> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" >>>> resourceName="UserDatabase"/> >>>> >>>> <Host name="localhost" appBase="webapps" >>>> unpackWARs="true" autoDeploy="true" >>>> xmlValidation="false" xmlNamespaceAware="false"> >>>> </Host> >>>> >>>> </Engine> >>>> </Service> >>>> </Server> >>>> >>>> >>>> >>>> Context.xml >>>> >>>> <?xml version='1.0' encoding='utf-8'?> >>>> <Context> >>>> >>>> <WatchedResource>WEB-INF/web.xml</WatchedResource> >>>> <ResourceLink name="jdbc/workout_logger" >>>> global="jdbc/workout_logger"/> >>>> >>>> </Context> >>>> >>>> >>>> >>>> I check and my db user "user" has full access to the DB it's trying to >>>> use. >>>> Is it possible that I am missing a library or something in the >>>> classpath >>>> of >>>> tomcat? I already have the mysql connector library ( I had my DB >>>> connections >>>> working fine without datasources before, but I am trying to switch to >>>> using >>>> datasources). >>>> >>>> Thanks again >>>> >>>> Arturo >>>> >>>> >>>> >>>> >>>> Filip Hanik - Dev Lists wrote: >>>> >>>> >>>>> put this >>>>> >>>>> <Resource name="jdbc/workout_logger >>>>> " auth="Container" >>>>> type="javax.sql.DataSource" >>>>> maxActive="100" maxIdle="30" maxWait="10000" >>>>> username="user" password="password" >>>>> driverClassName="com.mysql.jdbc.Driver" >>>>> >>>>> url="jdbc:mysql://localhost:3306/database_name?autoReconnect=true"/> >>>>> >>>>> inside the <GlobalNamingResources> in server.xml >>>>> >>>>> Put this >>>>> >>>>> <ResourceLink name="jdbc/workout_logger" >>>>> global="jdbc/workout_logger"/> >>>>> >>>>> inside the <Context> elemement in conf/context.xml >>>>> >>>>> >>>>> and try again >>>>> >>>>> Filip >>>>> >>>>> arturoguedez wrote: >>>>> >>>>> >>>>>> hey, sorry about that. The actual string I have in my app is >>>>>> "workout_logger" >>>>>> I just tried to replace my strings for "my_jdbc_name" for the >>>>>> posting. >>>>>> I >>>>>> guess I forgot to rename the in the error. >>>>>> >>>>>> other than that, do you see anything else wrong? >>>>>> >>>>>> >>>>>> >>>>>> Filip Hanik - Dev Lists wrote: >>>>>> >>>>>> >>>>>> >>>>>>> here is the name you specify >>>>>>> >>>>>>> <res-ref-name>jdbc/my_jdbc_name</res-ref-name> >>>>>>> >>>>>>> and here is your error >>>>>>> Could not find datasource:jdbc/workout_logger >>>>>>> >>>>>>> as you can see, somewhere you have configured the string >>>>>>> workout_logger, >>>>>>> and that one doesn't exist >>>>>>> >>>>>>> Filip >>>>>>> >>>>>>> arturoguedez wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>>> Hi! >>>>>>>> >>>>>>>> I have been reading how to setup datasources for Tomcat 6.0.18 in >>>>>>>> http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html >>>>>>>> and nothing I have done has allowed my web application to view the >>>>>>>> datasource i have created. >>>>>>>> >>>>>>>> Here are some snippets of my web.xml, and my server.xml >>>>>>>> >>>>>>>> In the web.xml >>>>>>>> >>>>>>>> <resource-ref> >>>>>>>> <description>DB Connection</description> >>>>>>>> <res-ref-name>jdbc/my_jdbc_name</res-ref-name> >>>>>>>> <res-type>javax.sql.DataSource</res-type> >>>>>>>> <res-auth>Container</res-auth> >>>>>>>> </resource-ref> >>>>>>>> >>>>>>>> In server.xml >>>>>>>> I have tried to place the following snip it anywhere I saw in the >>>>>>>> docs >>>>>>>> it >>>>>>>> could belong to (ei, in the GlobalNamingResources, inside the Host >>>>>>>> tag, >>>>>>>> or >>>>>>>> inside the Context tag in all possible locations (under >>>>>>>> META-INF/context.xml, under >>>>>>>> $CATALINA_BASE/conf/[engine]/[host]/[path].xml) >>>>>>>> and I haven't been successful. >>>>>>>> >>>>>>>> <Resource name="jdbc/my_jdbc_name" auth="Container" >>>>>>>> type="javax.sql.DataSource" >>>>>>>> maxActive="100" maxIdle="30" maxWait="10000" >>>>>>>> username="user" password="password" >>>>>>>> driverClassName="com.mysql.jdbc.Driver" >>>>>>>> >>>>>>>> url="jdbc:mysql://localhost:3306/database_name?autoReconnect=true"/> >>>>>>>> >>>>>>>> >>>>>>>> I am using Entity Managers to get my connections opened, here is >>>>>>>> the >>>>>>>> snip >>>>>>>> it >>>>>>>> of my persistence.xml >>>>>>>> >>>>>>>> <persistence-unit name="my_pu_name" >>>>>>>> transaction-type="RESOURCE_LOCAL"> >>>>>>>> >>>>>>>> <non-jta-data-source>jdbc/my_jdbc_name</non-jta-data-source> >>>>>>>> </persistence-unit> >>>>>>>> >>>>>>>> Here is what I get in my tomcat logs: >>>>>>>> >>>>>>>> 08/12/21 17:32:17 ERROR ceConnectionProvider: Could not find >>>>>>>> datasource: >>>>>>>> jdbc/workout_logger >>>>>>>> javax.naming.NameNotFoundException: Name jdbc is not bound in this >>>>>>>> Context >>>>>>>> at >>>>>>>> org.apache.naming.NamingContext.lookup(NamingContext.java:770) >>>>>>>> at >>>>>>>> org.apache.naming.NamingContext.lookup(NamingContext.java:153) >>>>>>>> at >>>>>>>> org.apache.naming.SelectorContext.lookup(SelectorContext.java:137) >>>>>>>> at javax.naming.InitialContext.lookup(InitialContext.java:392) >>>>>>>> at >>>>>>>> org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75) >>>>>>>> at >>>>>>>> org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137) >>>>>>>> at >>>>>>>> org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29) >>>>>>>> at >>>>>>>> org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89) >>>>>>>> at >>>>>>>> org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101) >>>>>>>> at >>>>>>>> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325) >>>>>>>> at >>>>>>>> org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) >>>>>>>> at >>>>>>>> org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) >>>>>>>> at >>>>>>>> org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126) >>>>>>>> at >>>>>>>> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52) >>>>>>>> .... >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Does anybody know what I am doing wrong? Is there any way to check >>>>>>>> which >>>>>>>> resources Tomcat makes avaiable? I am having a really hard time >>>>>>>> understanding what I am doing wrong. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>>>>>> For additional commands, e-mail: users-h...@tomcat.apache.org >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>>>> For additional commands, e-mail: users-h...@tomcat.apache.org >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>> For additional commands, e-mail: users-h...@tomcat.apache.org >>> >>> >>> >>> >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > > -- View this message in context: http://www.nabble.com/Tomcat-6-JDBC-connection-not-found-tp21120259p21156036.html Sent from the Tomcat - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org