tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bob Dietrich" <b...@bobd.biz>
Subject RE: JNDI datasource error upgrading from Tomcat 7.0.23 to 7.0.27
Date Mon, 29 Oct 2012 06:04:29 GMT
@Aladin Thanks for your suggestion. I took a look at the thread and I'm not
clear how realms would be an issue for me (using the defaults), but that
could just be my poor understanding.

Bob

-----Original Message-----
From: Aladin Dajani [mailto:aladin.dajani@gmail.com] 
Sent: Saturday, October 27, 2012 5:24 PM
To: Tomcat Users List
Subject: Re: JNDI datasource error upgrading from Tomcat 7.0.23 to 7.0.27

Hello,
I am mot familiar with Hibernate or Liferay, but I ran into what appear to
be similar.  Look onto the thread titled "
JDBCRealm conection timeout failure on getPassword" in thus list.  It may
help.

Aladin


On Oct 27, 2012, at 6:28 PM, Konstantin Kolinko <knst.kolinko@gmail.com>
wrote:

> 2012/10/28 Bob Dietrich <bobd@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(Datas
>> ourceCo
>> nnectionProvider.java:75)
>>        at
>> org.hibernate.connection.ConnectionProviderFactory.newConnectionProvi
>> der(Con
>> nectionProviderFactory.java:143)
>>            at
>> org.hibernate.connection.ConnectionProviderFactory.newConnectionProvi
>> der(Con
>> nectionProviderFactory.java:84)
>>        at
>> org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFa
>> ctory.j
>> ava:459)
>>            at
>> org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:90)
>>        at
>> org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.j
>> ava:286
>> 3)
>>            at
>> org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
>>        at
>> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.jav
>> a: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&amp;characterEnco
>> ding=UT
>> F-8&amp;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</
>> servlet
>> -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-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message