2014-02-20 33 views

回答

3

JDNI资源定义声明在Tomcat的<Context>元素中context.xml ,而不是您的新应用程序的web.xml。所以不管它是否生成,它并不重要。

<Context> 
<Resource name="jdbc/YourDB" auth="Container" 
      type="javax.sql.DataSource" 
      username="username" password="password" 
      driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://dbserver:dbport/actualDbname"/> 
</Context> 

如果在您的应用程序有web.xml文件,你需要这样的项目是指上面提到的数据源:

<resource-ref> 
    <res-ref-name>jdbc/YourDB</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

既然你选择不具有web.xml中,你可以使用标注:

@Resource(lookup = "java:comp/env/jdbc/YourDB") 
private DataSource dataSource; 

1有多种方式来定义的语境中,r请参阅有关Defining a Context的Tomcat定义。

0

当我发布这个问题时,我忘了说我正在使用Hibernate并包含这些文件。

的hibernate.cfg.xml的是:

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE 
hibernate-configuration 
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
<session-factory> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.datasource">java:comp/env/jdbc/ExemplosWeb</property> 

    <property name="hibernate.connection.username">TheUsername</property> 
    <property name="hibernate.connection.password">ThePassword</property> 

    <property name="hibernate.connection.pool_size">10</property> 
    <property name="show_sql">true</property> 
    <property name="format_sql">true</property> 
    <property name="hibernate.use_sql_comments">true</property> 
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.hbm2ddl.auto">create-drop</property> 
    <property name="current_session_context_class">thread</property> 
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

    <!-- One to One Unidirecional --> 
    <mapping class="relacionamentoHibernate.bean.PaiOneToOneUnidirecional"/> 
    <mapping class="relacionamentoHibernate.bean.FilhoOneToOneUnidirecional"/> 
</session-factory> 

有一个休眠的Util类:

package hibernateUtil; 

import javax.annotation.Resource; 
import org.hibernate.*; 
import org.hibernate.cfg.*; 

@Resource(lookup="java:comp/env/jdbc/exemplosweb") 
@SuppressWarnings("deprecation") 
public class HibernateUtil 
{ 
    private static final SessionFactory sessionFactory; 
    static 
    { 
     try 
     { 
      // Create the SessionFactory from hibernate.cfg.xml 
      sessionFactory = new Configuration().configure().buildSessionFactory(); 
     } 
     catch (HibernateException e) 
     { 
      // Make sure you log the exception, as it might be swallowed 
      e.printStackTrace(); 
      throw new ExceptionInInitializerError(e); 
     } 
     catch (NoClassDefFoundError e) 
     { 
      e.printStackTrace(); 
      throw new NoClassDefFoundError("static HibernateUtil"); 
     } 
    } 

    public static SessionFactory getSessionFactory() 
    { 
     return sessionFactory; 
    } 
} 

,我得到这个异常:

Fev 26, 2014 7:02:46 PM org.hibernate.annotations.common.Version <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final} 
Fev 26, 2014 7:02:46 PM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {4.1.4.Final} 
Fev 26, 2014 7:02:46 PM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Fev 26, 2014 7:02:46 PM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: HHH000021: Bytecode provider name : javassist 
Fev 26, 2014 7:02:46 PM org.hibernate.cfg.Configuration configure 
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml 
Fev 26, 2014 7:02:46 PM org.hibernate.cfg.Configuration getConfigurationInputStream 
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml 
Fev 26, 2014 7:02:46 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity 
WARN: HHH000223: Recognized obsolete hibernate namespace  http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide! 
Fev 26, 2014 7:02:46 PM org.hibernate.cfg.Configuration doConfigure 
INFO: HHH000041: Configured SessionFactory: null 
org.hibernate.service.jndi.JndiException: Unable to lookup JNDI name [java:comp/env/jdbc/ExemplosWeb] 
    at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68) 
    at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:116) 
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) 
相关问题