Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate Jndi Tomcat错误:BasicDataSource不支持_Java_Hibernate_Tomcat_Jndi - Fatal编程技术网

Java Hibernate Jndi Tomcat错误:BasicDataSource不支持

Java Hibernate Jndi Tomcat错误:BasicDataSource不支持,java,hibernate,tomcat,jndi,Java,Hibernate,Tomcat,Jndi,我实际上试图通过JNDI建立一个hibernate和jdbc连接池,但没有成功。经过几个小时的研究,我来找你,也许有人知道答案 第一件事:我正在使用Tomcat 8.0和Hibernate 5.2.8。如果需要的话,我真的不能在这些方面交替 im获取的错误为:java.lang.UnsupportedOperationException:BasicDataSource不支持 到目前为止我发现:由于DatasourceConnectionProviderImpl.getConnection中的更改

我实际上试图通过JNDI建立一个hibernate和jdbc连接池,但没有成功。经过几个小时的研究,我来找你,也许有人知道答案

第一件事:我正在使用Tomcat 8.0和Hibernate 5.2.8。如果需要的话,我真的不能在这些方面交替

im获取的错误为:java.lang.UnsupportedOperationException:BasicDataSource不支持

到目前为止我发现:由于DatasourceConnectionProviderImpl.getConnection中的更改,错误似乎发生了,我不是100%确定,其中getConnectionUsername,Password是“去擦亮”的。实际上,它只是抛出了这个错误

但是这里有一个问题,即使我不传输任何参数,我也会得到这个异常。我试图创建自己的javax.sql.DataSource接口来克服这个问题,但这也没有帮助

另一件事:JDBC工作得很好,唯一的问题是hibernate

跟踪上下文、web和课堂信息:

背景:

<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"
    />
如果需要更多信息,我很乐意提供

伊迪丝:

应要求:

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

可能与这里提到的相同:

其中一个答案的摘要:
如果hibernate在类路径中找到了hibernate.connection.username或/和hibernate.connection.password属性,它将使用不推荐的getConnectionuser,password方法。

Firstoff,谢谢您的评论。是的,这让我觉得我可能有同样的问题,但正如我提到的,我尝试了任何方法删除用户名和密码。即使不放进去,config和hbm.xml都不起作用。另外,自己的接口方法不起作用。是否也可以打印hibernate.cfg.xml?我添加了cfg.xml。我注意到您在映射中提到managedBean,但在配置hibernate时提到managedBeans。你有两条路吗?这是打字错误还是失败的原因。我用Hibernate 5.2.8建立了一个Tomcat8实例,没有JNDI问题。我只是升级到了Tomcat8.5,正如Hibernate的人推荐的那样,这就成功了。managedbean/beans错误是由于手写代码造成的,hibernate配置没有从原始项目复制,因为当时我手头没有它。不过,感谢您抽出时间:
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();
    }
}
<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>