@Konstantin, thanks much for your quick reply. I will try the META-INF/context.xml resource. I'll also try running under 7.0.32, although configuring Liferay to run can be a bit tedious and error prone (that's why I normally use a bundle). And thanks for the closeMethod suggestion.
Bob -----Original Message----- From: Konstantin Kolinko [mailto:knst.koli...@gmail.com] Sent: Saturday, October 27, 2012 3:28 PM To: Tomcat Users List Subject: Re: JNDI datasource error upgrading from Tomcat 7.0.23 to 7.0.27 2012/10/28 Bob Dietrich <b...@bobd.biz>: > Greetings, > I've researched this problem for several days, but I must be doing > something wrong. I'm trying to upgrade from Tomcat 7.0.23 to 7.0.27 > (actually running Liferay). I'm getting the following exception when > trying to access a datasource via Hibernate: > > 16:28:27,694 ERROR > [http-bio-8080-exec-1][DatasourceConnectionProvider:110] Could not > find > datasource: java:/comp/env/jdbc/MySqlDS > javax.naming.NameNotFoundException: Name > [java:/comp/env/jdbc/MySqlDS] is not bound in this Context. Unable to find [java:]. > at > org.apache.naming.NamingContext.lookup(NamingContext.java:820) > at org.apache.naming.NamingContext.lookup(NamingContext.java:168) > at > org.apache.naming.SelectorContext.lookup(SelectorContext.java:158) > at javax.naming.InitialContext.lookup(InitialContext.java:392) > at > org.hibernate.connection.DatasourceConnectionProvider.configure(Dataso > urceCo > nnectionProvider.java:75) > at > org.hibernate.connection.ConnectionProviderFactory.newConnectionProvid > er(Con > nectionProviderFactory.java:143) > at > org.hibernate.connection.ConnectionProviderFactory.newConnectionProvid > er(Con > nectionProviderFactory.java:84) > at > org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFac > tory.j > ava:459) > at > org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:90) > at > org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.ja > va:286 > 3) > at > org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859) > at > org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java > :1870) > > The exact same code runs fine in 7.0.23 (I can drop the WAR file in > either instance). > > Here is my $CATALINA_HOME/conf/context.xml file (comments removed): > > <?xml version='1.0' encoding='utf-8'?> > <!-- The contents of this file will be loaded for each web > application > --> > <Context> > > <!-- Default set of monitored resources --> > <WatchedResource>WEB-INF/web.xml</WatchedResource> > > <Resource name="jdbc/MySqlDS" auth="Container" > type="javax.sql.DataSource" > driverClassName="com.mysql.jdbc.Driver" > username="xxx" > password="xxx" > > url="jdbc:mysql://localhost:3306/xx?useUnicode=true&characterEncod > ing=UT > F-8&relaxAutoCommit=true" > maxActive="200" maxIdle="30" maxWait="10000" > minIdle="3" > testWhileIdle="true" testOnBorrow="true" > timeBetweenEvictionRunsMillis="120000" > minEvictableIdleTimeMillis="600000" > validationQuery="select 1" > /> > </Context> > > The web.xml from the application: > > <?xml version="1.0"?> > <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee > http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> > <servlet> > <servlet-name>HibernateServlet</servlet-name> > > <servlet-class>com.liferay.samplehibernate.servlet.HibernateServlet</s > ervlet > -class> > </servlet> > <servlet-mapping> > <servlet-name>HibernateServlet</servlet-name> > <url-pattern>/servlet/*</url-pattern> > </servlet-mapping> > <jsp-config> > <taglib> > > <taglib-uri>http://java.sun.com/portlet_2_0</taglib-uri> > <taglib-location> > /WEB-INF/tld/liferay-portlet.tld > </taglib-location> > </taglib> > </jsp-config> > <resource-ref> > <description>data source</description> > <res-ref-name>jdbc/MySqlDS</res-ref-name> > <res-type>javax.sql.DataSource</res-type> > <res-auth>Container</res-auth> > </resource-ref> > </web-app> > > And finally the the hibernate.cfg.xml file: > > <?xml version="1.0"?> > <!DOCTYPE hibernate-configuration PUBLIC > "-//Hibernate/Hibernate Configuration DTD 3.0//EN" > "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> > > <hibernate-configuration> > <session-factory> > <property > name="current_session_context_class">thread</property> > > <!-- Mappings --> > <property > name="connection.datasource">java:/comp/env/jdbc/MySqlDS</property> > <property name="dialect"> > org.hibernate.dialect.MySQLDialect > </property> > > <mapping > > resource="com/liferay/samplehibernate/model/FoodItem.hbm.xml" /> > </session-factory> > </hibernate-configuration> > > Did a bit more research. On vanilla versions of Tomcat 7.0.27 and the > corresponding Liferay bundle, I can make a global definition using the > same resource in server.xml. I can see the connection pool using > psi-probe and run queries. However, as soon as I introduce a > resource-ref, either in the app or in the global web.xml, psi-probe > complains that the resource is not configured correctly. > > Any suggestions about what I'm missing? Thanks. > Do you know that $CATALINA_HOME/conf/context.xml does not define a "global" resource, but is used as the parent for webapps' own META-INF/context.xml files? Essentially, each web application gets its own copy of the pool. I wonder whether "resource-ref" in web.xml is treated as a <Resource> in app's own context.xml file and thus overwrites the default one. 1. Does it work in the current release, 7.0.32 ? 2. Does it work if you use META-INF/context.xml in your web application to define the Resource? 3. There were many changes between 7.0.23 and 7.0.27, but none seems as a possible cause for such change in behaviour. BTW, I usually add closeMethod="close" attribute when configuring a database pool. Best regards, Konstantin Kolinko --------------------------------------------------------------------- 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