2017-03-29 1 views
0

Ich versuche, eine Spring 4 MVC-Anwendung in STS mit einem Tomcat 8-Server und einer Oracle 11g-Datenbank einzurichten. Ich habe Probleme beim Einrichten der Datenquelle.Tomcat 8 Oracle 11 JNDI Kann JDBC-Treiber der Klasse '' für Verbindungs-URL 'null' nicht erstellen

Ich weiß, dass mit dem Spring-Setup nichts falsch ist, weil es ohne die Datenquelle funktioniert.

Hier ist die Datenquelle Bohne:

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

Meine web.xml Ressource ref:

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

Mein Tomcat server.xml Ressourcen:


->

<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" 
      /> 

Und mein context.xml

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

Der Fehler Ich erhalte, ist dies:

ERROR: Unable obtain JDBC Connection java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null' at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2167) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2037) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1543) at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) at org.hibernate.internal.SessionFactoryImpl$1.obtainConnection(SessionFactoryImpl.java:419) at org.hibernate.hql.spi.id.IdTableHelper.executeIdTableCreationStatements(IdTableHelper.java:67) at org.hibernate.hql.spi.id.global.GlobalTemporaryTableBulkIdStrategy.finishPreparation(GlobalTemporaryTableBulkIdStrategy.java:125) at org.hibernate.hql.spi.id.global.GlobalTemporaryTableBulkIdStrategy.finishPreparation(GlobalTemporaryTableBulkIdStrategy.java:42) at org.hibernate.hql.spi.id.AbstractMultiTableBulkIdStrategyImpl.prepare(AbstractMultiTableBulkIdStrategyImpl.java:88) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:302) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:445) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:710) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:511) at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:495) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:742) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4940) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5250) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(Unknown Source) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2151) ... 44 more

Mein Tomcat lib hat die ojdbc jar, die ich brauche, und ich Ich habe es sogar in mein Build-Skript aufgenommen. Was könnte das verursachen?

Antwort

1

Überprüfen Sie Ihre Verbindungs-URL. Verwenden Sie außerdem immer die lange Form der Verbindungs-URL, über die Sie verschiedene Verbindungsdeskriptoren übergeben können.

Beispiel: jdbc: Oracle: thin: @ (DESCRIPTION = (ADDRESS = (HOST = myhost) (PORT = 1521) (PROTOCOL = tcp)) (CONNECT_DATA = (SERVICE_NAME = myorcldbservicename)))

0

The Lösung war so einfach wie es peinlich dumm war. Seit ich in Eclipse arbeite, generiert und verwendet Eclipse seine eigenen Dokumente server.xml und context.xml in einem Server-Verzeichnis. Sobald ich meine Datenquelle in diese Dateien legte, funktionierte alles gut

Verwandte Themen