Je suis en train d'essayer de mettre en place un pool de connexions hibernate et jdbc par JNDI, mais je ne parviens pas à le faire. Après des heures de recherche, je viens à vous, peut-être que quelqu'un connaît la réponse.Hibernate Jndi Tomcat Erreur: Non supporté par BasicDataSource
Tout d'abord, j'utilise Tomcat 8.0 et Hibernate 5.2.8. Je ne peux pas vraiment alterner dans ceux-ci, si c'est nécessaire pour le faire fonctionner.
L'erreur im obtenir est: « java.lang.UnsupportedOperationException: Non pris en charge par BasicDataSource »
Ce que je trouve à ce jour: L'erreur semble se produire (je ne suis pas sûr à 100%) en raison d'un changement de le DatasourceConnectionProviderImpl.getConnection, où "getConnection (nom d'utilisateur, mot de passe" est "déprimé" (En fait, il jette simplement cette erreur)
Mais voici le piège, même si je ne transfère aucun paramètre, je reçois cette exception J'ai essayé de faire ma propre interface de "javax.sql.DataSource" pour surmonter cela, mais cela n'a pas aidé non plus.Autre chose: JDBC fonctionne très bien, le seul problème est hibernate.
suivi du contexte, web et infos classe:
Contexte:
<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"
/>
Web:
<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>
code:
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();
}
}
si plus d'information est nécessaire , im ha ppa pour fournir
Edith:
Comme demandé:
<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>
Pouvez-vous imprimer votre fichier hibernate.cfg.xml? –
J'ai ajouté le fichier cfg.xml. – Bienenwolf
J'ai remarqué que vous mentionnez 'managedBean' pour vos mappings, mais vous mentionnez' managedBeans' quand vous avez configuré Hibernate. Avez-vous deux chemins, est-ce une faute de frappe, ou la raison de l'échec. Je me suis levé une instance Tomcat8 avec Hibernate 5.2.8, pas de problèmes JNDI. – Naros