今天想把项目中配置在spring中的数据源移到tomcat中来配置,遇见了一些问题,请各位指教,小弟感谢了。
目的:从spring中得到tomcat中配置的datasource。
我的做法:
在tomcat的context.xml文件中GlobalNamingResources标签中加入如下代码:
<Resource
name="dataSource"
type="javax.sql.DataSource"
password="54mwr"
driverClassName="org.postgresql.Driver"
maxIdle="3"
maxWait="5000"
username="alemis"
url="jdbc:postgresql://localhost:5432/alemis_dev"
maxActive="10"/>
在tomcat的context.xml文件中Host标签中加入如下代码:
<Context path="/pro" privileged="true"
docBase="E:/work2/alemis2/target/pro">
</Context>
在项目的web.xml文件的最后面加了如下代码:
<resource-ref>
<res-ref-name>dataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
然后在spring的application.xml文件中如下引用:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/dataSource</value>
</property>
</bean>
我启动tomcat的时候出现了如下错误:
2008-12-09 15:34:29,252 WARN Thread-1 hibernate.cfg.SettingsFactory Could not obtain connection metadata
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
at $Proxy0.getConnection(Unknown Source)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2073)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1298)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367
分享到:
相关推荐
Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理。数据源是一个池子,里面有若干个数据连接对象,当需要时就从里面拿一个使用,使用完毕就放回去,如果超过最大...
在Tomcat中配置JNDI资源,以便Spring可以使用这些数据源。具体的XML配置如下: ```xml auth="Container" factory="org.objectweb.jndi.DataSourceFactory" type="javax.sql.DataSource" driverClassName=...
然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...
JNDI主要用在应用服务器中,它提供了一个统一的接口来管理和查找资源,如数据源、邮件会话等。 首先,我们需要理解JNDI的工作原理。JNDI是一个API,它允许应用程序查找和访问各种命名和目录服务,这些服务可以是...
- 考虑使用Spring Boot,它提供了更简洁的方式来配置JNDI数据源,只需在`application.properties`或`application.yml`中设置相应的JNDI名称即可。 - 为了提高性能,可以考虑使用连接池,如C3P0、HikariCP等。...
在Tomcat6.0中配置JNDI,主要是为了实现应用中的数据源管理,使得多个应用可以共享一个数据库连接池,提高资源利用率和系统性能。 **一、JNDI的基本概念** JNDI提供了一个统一的接口,让开发者可以查找和绑定各种...
接着,你需要在`applicationContext.xml`或类似的Spring配置文件中,使用`jee:jndi-lookup`标签来查找这个数据源: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
在Java Web开发中,数据库连接管理是至关重要的部分,而Tomcat JDBC连接池(也称为Tomcat JNDI DataSource Provider)则是一个高效、轻量级且功能丰富的连接池实现。这个连接池组件在Spring Boot框架中被广泛使用,...
1. Spring配置:在Spring的配置文件(如applicationContext.xml)中,不直接定义DataSource,而是声明一个Bean,使用JNDI查找来获取数据源。例如: ```xml <bean id="dataSource" class="org.springframework.jndi....
在Java应用服务器如Tomcat中,使用JNDI(Java Naming and Directory Interface)数据源是一种标准的方式,它允许我们集中管理和配置数据库连接,提高应用的可移植性和可维护性。JNDI提供了一个目录服务,应用程序...
3. **配置Context元素**:在Tomcat的`context.xml`文件中,你需要定义一个数据源(DataSource),并将C3P0连接池与JNDI绑定。例如: ```xml type="com.mchange.v2.c3p0.ComboPooledDataSource" driverClass=...
2. **JNDI在应用服务器中的作用:** 在Tomcat这样的应用服务器中,JNDI常用来管理资源,比如数据源(DataSource)。开发者可以将数据源配置在服务器的上下文中,然后通过JNDI查找来获取,这种方式方便了应用的部署和...
本文将详细介绍在Tomcat 6环境中配置JNDI的具体步骤和注意事项,帮助开发者更好地理解和应用这一功能。 #### 二、配置JNDI资源 ##### 2.1 准备工作 - **安装Tomcat 6**:确保已经正确安装并配置了Tomcat 6环境。 -...
在Tomcat中,我们通常会使用JNDI来查找和获取数据源,以便应用程序能便捷地创建和管理数据库连接。 配置JNDI数据源的步骤如下: 1. **配置Tomcat服务器**:打开Tomcat安装目录下的`conf/server.xml`文件。在`...
2. **在Web应用程序中使用JNDI**:在Spring框架的应用程序上下文文件`applicationContext.xml`中,你可以通过`JndiObjectFactoryBean`来引用之前定义的数据源: ```xml <bean id="dataSource" class="org.spring...
本文将详细介绍如何在Spring中使用JTA事务管理,包括通过集成JOTM(Java Open Transaction Manager)以及引用Tomcat的JTA事务。 ### 1. 通过集成JOTM,直接在Spring中使用JTA事务 #### 1.1. 添加JOTM类库到类路径...
- **4.1.1 添加新数据源**:在每个应用模块的Spring配置文件`spring-context.xml`中,使用`<bean>`标签创建一个`JndiObjectFactoryBean`,通过JNDI查找之前在Tomcat中配置的数据源。 在完成这些配置后,每个应用...
总结,配置Tomcat涉及的关键步骤包括:添加JDBC驱动到类路径,配置`context.xml`以定义数据源,更新`web.xml`以声明对数据源的引用,最后通过JNDI在应用程序中查找并使用数据源。正确配置这些元素对于确保Tomcat能够...