2017-02-27 82 views
0

即時嘗試建立一個hibernate和jdbc連接池由JNDI,但我沒有成功這樣做。經過數小時的研究,我來找你,也許有人知道答案。Hibernate Jndi Tomcat錯誤:不支持BasicDataSource

第一件事:我使用Tomcat 8.0和Hibernate 5.2.8。實際上我不能在這些交替,如果這需要使它工作。

錯誤即時得到的是:「java.lang.UnsupportedOperationException:通過的BasicDataSource不支持」

我發現了什麼至今:錯誤似乎發生(IM不能100%確定),由於在改變DatasourceConnectionProviderImpl.getConnection,其中「getConnection(用戶名,密碼」是'depricated'(實際上,它只是拋出這個錯誤)

但是,這裏的捕獲,即使我不轉移任何參數,我得到這個異常。我試圖讓我自己的接口「javax.sql.DataSource」來克服這一點,但這也沒有幫助。

另一件事:JDBC工作得很好,唯一的問題是休眠。

跟進的背景下,網絡和類的相關信息:

語境:

<Resource name="jdbc/basic" 
     global="jdbc/basic" 
     auth="Container" 
     type="javax.sql.DataSource" 
     maxActive="10" 
     maxIdle="20" 
     maxWait="10000" 
     username="root" 
     password="1" 
     driverClassName="com.mysql.jdbc.Driver" 
     testOnBorrow="true" 
     url="jdbc:mysql://localhost/javatest" 
    /> 

網站:

<resource-ref> 
     <description>JNDI MYSql JDBC Connection</description> 
     <res-ref-name>jdbc/basic</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

代碼:如果不再信息需要

public TestClass() { 
    try { 
     Connection jdbc = ((javax.sql.DataSource) new InitialContext().lookup("java:comp/env/jdbc/basic")).getConnection(); 
     System.out.println(new Configuration().configure("managedbeans/hibernate.cfg.xml").buildSessionFactory().openSession().createQuery("Select * from Testdata").list().size()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

,im ha根據要求

:PPY提供

伊迪絲

<hibernate-configuration> 
    <session-factory> 

     <property name="hibernate.connection.datasource">java:comp/env/jdbc/basic</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="show_sql">true</property> 
     <property name="current_session_context_class">thread</property> 
     <property name="hbm2ddl.auto">update</property> 
     <property name="hibernate.max_fetch_depth">3</property> 

     <!-- Mapped annotated entity--> 
     <mapping class="managedbean.TestPojo"/> 

    </session-factory> 
</hibernate-configuration> 
+0

你能打印你的hibernate.cfg.xml嗎? –

+0

我添加了cfg.xml。 – Bienenwolf

+0

我注意到你爲映射提到'managedBean',但是當你配置Hibernate時你提到'managedBeans'。你有兩條路,是一個錯字,還是失敗的原因。我用Hibernate 5.2.8站起來了一個Tomcat8實例,沒有JNDI問題。 – Naros

回答

0

可能是同這裏提到:答案之一tomcat-connection-pooling-java-lang-unsupportedoperationexception-not-support

摘要: 如果Hibernate沒有找到屬性hibernate.connection.username或/和hibernate.connection.password在類路徑內使用已棄用的getConnection(user,password)方法。

+0

Firstoff,謝謝你的評論。是的,這讓我想我可能有同樣的問題,但正如我所提到的,我嘗試了任何方法來刪除用戶名和密碼。即使不把它和config和hbm.xml都不起作用。 「自己的界面」方法也不想工作 – Bienenwolf