从jboss JNDI获取sessionfactory时出现此错误,这是我的源代码。我已经多次尝试多次修改,但一直没有解决。 提前谢谢。
放在jboss默认部署文件夹中。
<datasources>
<local-tx-datasource>
<jndi-name>jdbc/NeuraDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/neurahmis</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>admin</user-name>
<password>admin@123</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>1000</max-pool-size>
<exception-sorter-class- name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
</local-tx-datasource>
</datasources>
在web.xml中添加了数据源
<resource-ref>
<description>Database connection resource</description>
<res-ref-name>Neura</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
在jboss-web.xml中添加了jndi
<jboss-web>
<context-root>/neurads</context-root>
<resource-ref>
<res-ref-name>Neura</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:jdbc/NeuraDS</jndi-name>
</resource-ref>
</jboss-web>
这些是我的hibernate属性。
<property name="hibernate.connection.datasource">java:/jdbc/NeuraDs</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">true</property>
获取会话工厂
sessionFactory=new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
答案 0 :(得分:0)
不确定为什么需要在web.xml
和jobss-web.xml
中输入内容。 mysql-ds.xml
应足以binding a datasource to JNDI tree。
在文件hibernate.cfg.xml
中,您将数据源称为java:/jdbc/NeuraDs
,您可以将其更正为jdbc/NeuraDs
然后尝试。这就是我在项目及其工作中使用它的方式。 JNDI名称应与您在mysql-ds.xml
中提到的名称相同。
请确保检查启动日志以查看与此配置相关的任何错误。
答案 1 :(得分:0)
它与读取连接创建属性有关。当您通过系统属性直接提供连接属性时,它可以工作。与basic hibernate设置相关的内容看起来不对。