我想知道如何使用Eclipse Kepler和Tomcat 7为MySQL数据库创建JNDI条目(是否有插件用于Eclipse? )。如何使用Eclipse和Tomcat为不带web.xml的动态Web项目创建JNDI
当我使用Eclipse创建动态Web项目时,我没有选中“生成web.xml部署描述符”,所以我的项目中没有web.xml文件。
我想知道如何使用Eclipse Kepler和Tomcat 7为MySQL数据库创建JNDI条目(是否有插件用于Eclipse? )。如何使用Eclipse和Tomcat为不带web.xml的动态Web项目创建JNDI
当我使用Eclipse创建动态Web项目时,我没有选中“生成web.xml部署描述符”,所以我的项目中没有web.xml文件。
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定义。
当我发布这个问题时,我忘了说我正在使用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)