我有一个在 Tomcat 7 上运行的 Web 应用程序。它使用 Hibernate 4 连接到在 Tomcat server.xml 和 context.xml 文件中定义的数据源。
由于公司内部原因,我必须将 webapp 迁移到 Weblogic 12。除了与数据库的连接外,我已经成功部署了它。我在 Weblogic 控制台上创建了一个数据源并通过控制台对其进行了测试,它工作正常(JNDI 名称是 jdbc/MyAppDB
)。
要在 Tomcat 中运行我的应用程序,我只需告诉 hibernate.cfg.xml
文件查找数据源,但显然这对于 Weblogic 来说是不够的。我真的很困惑如何配置数据源连接。基本问题是:
我是否必须将其他文件添加到我的 Web 应用程序?我见过一些人谈论诸如
context.xml
和weblogic.xml
之类的文件,但不知道它们应该放在哪里。我是否必须向我的
hibernate.cfg.xml
文件添加属性?在为 DataSource 定义 JNDI 名称时,我是否应该使用
jdbc
前缀?只是因为我在 Tomcat 上就是这样使用的
下面是我当前的 hibernate.cfg.xml
文件和以前的 Tomcat 数据源配置。
OBS:应用结构是用Maven创建的。
hibernate .cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.datasource">java:/comp/env/jdbc/MyAppDB</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">false</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.max_fetch_depth">3</property>
<mapping class="org.my.app.model.ServerInfo"/>
<mapping class="org.my.app.model.Parameter"/>
</session-factory>
</hibernate-configuration>
Tomcat 数据源
<Resource name="jdbc/MyAppDB" global="jdbc/MyAppDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="#####" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/myappdb"/>
最佳答案
很明显我以错误的方式定义了数据源路径。它应该只是 JNDI 名称。因此,在我的例子中,数据源应该在 hibernate.cfg.xml 中被引用为:
<property name="hibernate.connection.datasource">jdbc/MyAppDB</property>
编辑: 另外值得注意的是,此时 Weblogic 12c 可以与 Hibernate 4.3.5+ 一起很好地工作。不过,我已经成功使用 4.1.1。使用旧的、已弃用的 HibernateUtil 方法,例如 buildSessionFactory()
。
关于hibernate - 使用 Hibernate+DataSource 将应用程序从 Tomcat 7 迁移到 Weblogic 12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25192575/