当前位置: 首页 > 知识库问答 >
问题:

Tomcat 8 Oracle 11 JNDI无法为连接URL 'null '创建类''的JDBC驱动程序

漆雕修能
2023-03-14

我正在尝试使用Tomcat 8服务器和Oracle 11g数据库在STS中设置Spring 4 MVC应用程序,但在设置数据源时遇到了问题。

我知道Spring设置没有问题,因为没有数据源,它可以正常工作。

下面是数据源 bean:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/myDB" />
    <property name="resourceRef" value="false" />
</bean>

我的web.xml资源引用:

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

我的Tomcat服务器。xml资源:


-

<Resource name="jdbc/myDB"
          global="jdbc/myDB"
          auth="Container"
          type="javax.sql.DataSource"
          username="xxxxx"
          password="yyyyyy"
          url="jdbc:oracle:thin:@xxx.yyy"
          driverClassName="oracle.jdbc.OracleDriver"
          initialSize="20"
          maxWaitMillis="15000"
          maxTotal="75"
          maxIdle="20"
          maxAge="7200000"
          testOnBorrow="true"
          validationQuery="select 1 from dual"
          />

还有我的背景.xml

  <ResourceLink name="jdbc/myDB"
    global="jdbc/myDB"
    type="javax.sql.DataSource"/>

我得到的错误是:

错误:无法从java.sql获取JDBC连接。SQLException:无法在org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2167)的org.apach.tomcat.dbcp.dbcp2.basicDatasources.createDataSource(BasicDataSource.java:2037)和org.apachi.tomcate.dbcp1.BasicDataSource.getConnection(BasicDataSource.java:1543)的org.apache.apaches.tomcataSource.dbcp.dbcDatasource.处为连接URL“null”创建类“”的JDorg.hibernate.internal.SessionFactoryImpl$1.getConnection(Sessionfactory Impl.java:419)位于org.hi伯nate.hql.spi.id.IdTableHelper.executeIdTableCreationStatements(IDTableHelper67)处org.hibernate.hql.spi.id.global.GlobalTemporaryTableBulkIdStrategy.finishPreparion(globalttemporarytableBulkidstrategy.java:125)位于org.hi备nate.hql.spi.id.global.globaltimporaryTalkidStrategy.finishPreparation(globaltemporayTableBulkIDStrategy42)位于org.hibernate.hql.id.abstractableBulkidstrategyImpl.准备(AbstrategyImpl)位于org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:302)位于org.hi备nate.boot.internals.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:445),org.histernate.cfg.Configuration.buildSessionFactory(Configuration.java:710)位于org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:511)位于org.spring框架.orm.hibernate 5.LocalSessionFactoryBean.AfterPropertieSet(localSectionFactoryBean.java:495)位于org.springframework.beans.factory.support.AbstractAutoWirecableBeanFactory.InvokeInMethods(AbstractautoWirecableBeanFactory.java:1687)位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractautoWireCapbleBeanFactory.java:1624)位于org.spring框架.bean.factory.support.AbtractAutoWirecCapableBeanFactory.doCreateBean(abstractAutowireCapableBean工厂.java:555),位于org.springframework.bean.factorySupport(AbstractAutoWireAbleBeanFactory.java:483)位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306),位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultsingletonBean注册表.java:230),位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)位于org.spring框架.bean.factory.support.DefaultListableBean factory.PreInstanceSingletons(DefaultListableBeanFactory.java:742),org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractionContext.java:866)位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplication context.java:542)位于org.spring Framework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(Frameworksrvlet.java:668)位于org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(frameworksrvlet.java:682)位于org.spring框架.web.servlet.frameworkervlet.initWebApplicationContext(FrameworkServlet.java:553)位于org.springframe.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)位于javax.servlet.GenericServlet.init(genericsrvlet.java:158)位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWraper.java:1183)位于org.apache.catalina.core.standardWrappers.loadServlet(StandardWwrapper.java:1099)位于org.;apache.;catalina.;core.core.StandardContext.loadOnStartup(StandardContext.java:4940)位于orgorg.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5250)位于org.apach.catalina.util.LifecycleBase.start(LifecycleBase.java:150),org.apachi.catolina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)位于org.apache.catalina.core.ContanerBase$StartChild.call(continerBase.java:1409)位于java.util.concurrent.FutureTask。在java.util.concurrent.ThreadPoolExecutor上运行(未知源)。runWorker(未知源代码)位于java.util.concurrent.ThreadPoolExecutor$Worker。在java.lang.Thread上运行(未知源代码)。运行(未知源)的原因:java.sql。SQLException:在java.sql.DriverManager中没有合适的驱动程序。getDriver(未知源代码)位于org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2151)…44或更多

我的Tomcat lib目录中有我需要的ojdbc jar,我甚至将它包含在我的构建脚本中。这是什么原因造成的?

共有2个答案

孟豪
2023-03-14

解决方案既简单又愚蠢,令人尴尬。由于我在Eclipse中工作,Eclipse生成并使用自己的服务器。xml和上下文。服务器目录中的xml文档。一旦我将数据源放入这些文件中,一切都正常

阎弘雅
2023-03-14

请检查您的连接URL。此外,始终使用长形式的连接URL,您可以在其中传递各种连接描述符。

示例:jdbc:oracle:瘦:@(描述=(地址=(主机=myhost)(端口=1521)(协议=tcp))(CONNECT_DATA=(SERVICE_NAME=myorcldbservicename)))

 类似资料:
  • 问题内容: 我已经尝试了几乎所有可以找到的一切,如果有人能够帮助我,我将永远感激不已(在我的时间里,我有更多的空闲时间)。 基本上,我在Tomcat 7.0中有一个错误(都是在Eclipse中运行并通过startup.bat运行时),该错误表示一旦动态Web应用程序开始访问数据,就会出现此错误: 我的tomcat \ lib目录中有sqljdbc4.jar文件。我也尝试过将它放在我的WEB-INF

  • 我创建了一个属性文件 我创建了一个连接池 然后我就有问题了。我搜索了一些Anwser,他们说司机需要像上课一样注册。forName(com.mysql.jdbc.Driver)。但我的驱动程序版本似乎能够自行注册,所以这个解决方案无法工作。 错误: 2018年10月2日上午9:46:09组织。阿帕奇。卡塔琳娜。果心StandardContext重新加载信息:重新加载名为[/WEB13]的上下文已完

  • 我尝试使用TNS URL、用户名和密码连接到Oracle 11i数据库。JNDI正在成功查找数据源,但我无法获得连接。相反,我看到下面的堆栈跟踪。 我的Maven设置如下。 我的Spring MVC应用程序已经部署到Tomcat 8。我的oracle jar文件位于位置。如下所示 我的web.xml配置 我不确定我做错了什么。我能够使用DriverManager API成功连接。我看了下面的帖子,

  • 为什么当我提供了数据库URL时,它会说null URL,并在异常中给出一个空的''类? 我试图在使用Tomcat时通过servlet连接到derby数据库。当servlet运行时,会出现以下异常: Servlet: 注意:在@Bryan Pendleton回答后,我将驱动程序更改为,但是我得到了相同的异常。

  • 问题内容: 我目前正在为大学的一个班级做项目。我正在学习有关连接和操作数据库的信息,我们正在使用Microsoft .accdb文件。 这是我到目前为止所拥有的。 当寻找“ sun.jdbc.odbc.JdbcOdbcDriver”时,我得到以下输出。 似乎很容易解决。看来我想念司机或类似的东西。但是,我很难找到解决方法。JDK随附驱动程序吗?我需要单独下载吗?是否取决于我的操作系统?(Mac O

  • 我试图使用JDBC API连接到MySQL。我已经下载了MySQL驱动程序,它是“mysql-connector-java-5.1.28-bin jar”文件。我的操作系统是Windows7,我将Java的类路径设置为以下路径: 注意:谢谢你的回答。我已经解决了问题。由于我使用的是Eclipse,所以我已经将JAR文件添加到Eclipse的类路径中。