Hibernate 从Tomcat 7.0.23升级到7.0.27时发生JNDI数据源错误

Hibernate 从Tomcat 7.0.23升级到7.0.27时发生JNDI数据源错误,hibernate,datasource,tomcat7,jndi,Hibernate,Datasource,Tomcat7,Jndi,我正在尝试从Tomcat7.0.23升级到7.0.27(实际上运行的是Liferay)。尝试通过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:/

我正在尝试从Tomcat7.0.23升级到7.0.27(实际上运行的是Liferay)。尝试通过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(DatasourceConnectionProvider.java:75)
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:143)
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:84)
    at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:459)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:90)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)
[...]
完全相同的代码在7.0.23中运行良好(我可以在任一实例中删除WAR文件)

这是我的$CATALINA_HOME/conf/context.xml文件(注释已删除):


WEB-INF/WEB.xml
应用程序中的web.xml文件:

<?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>

冬眠小瓶
com.liferay.samplehibernate.servlet.HibernateServlet
冬眠小瓶
/servlet/*
http://java.sun.com/portlet_2_0
/WEB-INF/tld/liferay-portlet.tld
数据源
jdbc/MySqlDS
javax.sql.DataSource
容器
最后是hibernate.cfg.xml文件:

<?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>

线
java:/comp/env/jdbc/MySqlDS
org.hibernate.dialogue.mysqldialogue

对我遗漏的东西有什么建议吗?谢谢。

做了更多的研究。在Tomcat 7.0.27的普通版本和相应的Liferay捆绑包上,我可以使用server.xml中的相同资源创建全局定义。我可以使用和运行查询查看连接池。但是,只要我在应用程序或global web.xml中引入资源引用,psi probe就会抱怨资源配置不正确。下一步的建议?你有没有想过?我遇到了类似的问题。
<?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>