org.apache.tomcat.dbcp.dbcp.SQLNestedException: не удается создать драйвер JDBC класса '' для URL-адреса подключения 'null'

0

Я работаю над веб-проектом, используя spring, hybernate + jpa. Я пытаюсь настроить транзакции JTA с Atomkios  мой backend - mySql. Я не могу настроить приложение для работы с mySql.   мой веб-сервер - tomcat 5.5.Я пытаюсь настроить jndi с помощью datasource.. здесь мой код

persistence.xml:

  <persistence-unit name="exhub" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:comp/env/jdbc/exampleWeb</jta-data-source>
        <mapping-file>META-INF/orm.xml</mapping-file>
   <class>com.evolvus.common.model.Talogin</class>
   <class>com.evolvus.common.model.TaUser</class>  
            ----------------- 
            -----------------  
           <properties>
            <property name="hibernate.transaction.manager_lookup_class" 
            value="com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup"/>
            </ properties>     
 </persistence-unit>
</persistence>

orm.xml:

<description>Evolvus Solutions</description> 
<package>com.evolvus.common.model</package>


 <entity class="com.evolvus.common.model.TaUser" name="TaUser">
  <table name="ta_user" />
  <attributes>
   <id name="userId">
   <column name="USER_ID"/>
    <generated-value strategy="TABLE" />
   </id>
   <basic name="userName">
    <column name="USER_NAME" length="50" />
   </basic>

  </attributes>
 </entity>
  ---------------
  --------------
  ---------------

</entity-mappings>

config.xml:

 <beans: bean id="sessionFactory"   
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <beans: property name="useTransactionAwareDataSource"
   value="true" /> 
  <beans: property name="hibernateProperties">
   <beans: props>
    <beans: prop key="hibernate.dialect">${database.target}</beans:prop>
    <beans: prop key="hibernate.connection.isolation">3</beans:prop>
    <beans: prop key="hibernate.current_session_context_class">jta</beans:prop>
    <beans: prop key="hibernate.transaction.factory_class">com.atomikos.icatch.jta.hibernate3.AtomikosJTATransactionFactory
    </beans: prop>
    <beans: prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup
    </beans: prop>
    <beans: prop key="hibernate.connection.release_mode">on_close</beans: prop>
    <beans: prop key="hibernate.show_sql">false</beans: prop>
   </beans: props>
  </beans: property>
 </beans: bean>

 <beans: bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
  <beans: property name="entityManagerFactory">
   <beans: ref bean="entityManagerFactory" />
  </beans: property>
 </beans: bean>
 <beans: bean id="entityManagerFactory"
  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <beans: property name="persistenceUnitName" value="payhub" />
  <beans: property name="jpaVendorAdapter">
   <beans:bean
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <beans: property name="generateDdl" value="false" />
    <beans: property name="showSql" value="true" />
    <beans: property name="databasePlatform" value="${database.target}" />
   </beans: bean>
  </beans: property>
  <beans: property name="persistenceXmlLocation">
   <beans: value>classpath:META-INF/persistence.xml</beans:value>
  </beans: property>
 </beans: bean>
</beans: beans>

и я настроил jndi в tomcat 5.5

Apache Software Foundation\Tomcat 5.5\conf.xml:

 <Resource
      name="jdbc/exampleWeb"
      type="javax.sql.DataSource"
      maxActive="4"
      maxIdle="2"
      username="root"
      maxWait="5000"
      validationQuery="SELECT=1"
      driverClassName="com.mysql.jdbc.Driver"
      password="roopt"  
      url="jdbc\:mysql\://localhost\:3306/welcomeHub"/> 

 and my application\web.xml 

 <resource-ref>
   <description>PaymentsDatabase</description>
   <res-ref-name>jdbc/exampleWeb</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
   <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref> 

Мой сервер отлично смотрится, но когда я пытаюсь получить доступ к данным db, я получаю следующую ошибку в своем веб-браузере.

org.springframework.jdbc.CannotGetJdbcConnectionException: не удалось получить соединение JDBC; Вложенное исключение - org.apache.tomcat.dbcp.dbcp.SQLNestedException: не удается создать драйвер JDBC класса '' для подключения URL 'null' org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)

Помогите мне

  • 0
    В одном месте у вас есть java: comp / env / jdbc / exampleWeb, а в другом name = "jdbc / paymentWeb" - это может быть проблемой?
  • 0
    нет rehghuram. Это моя письменная ошибка .. в моем приложении все то же имя только ..
Показать ещё 1 комментарий
Теги:
spring
hibernate
jpa
jndi

3 ответа

2

Я думаю, что ваше приложение не находит файл jar файла для соединителя mysql, иначе ваш URL неверно сконфигурирован.

Попробуйте выполнить

  • Поместите ваш jar файл в mysql под tomcat/common/lib, чтобы он был поднят перед классами webapp.
  • Измените свой контекст .xml, чтобы иметь ресурс, как показано ниже.

    
    
    
    <Resource  name="jdbc/exampleWeb"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        username="root"
        maxWait="10000"
        driverClassName="com.mysql.jdbc.Driver"
        password="roopt"  
        url="jdbc:mysql://localhost:3306/welcomeHub"/>
    
    Код>
  • 0
    добавление jar соединителя в classpath решило мою проблему. Благодарю.
0

Я видел ту же самую проблему с DBCP, и обычно это означает, что он не может найти драйвер JDBC... убедитесь, что контейнер "com.mysql.jdbc.Driver" доступен для контейнера

0

Я не понимаю, зачем вам нужны entityManagerFactory и sessionFactory, обычно требуется только один из них.

Если sessionFactory не требуется, удалите его. В противном случае обратите внимание, что его источник данных не настроен - я думаю, это причина.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню