【问题标题】:How to use the same connection datasource on Tomcat and Glassfish?如何在 Tomcat 和 Glassfish 上使用相同的连接数据源?
【发布时间】:2012-03-20 09:32:27
【问题描述】:

我喜欢在本地 Tomcat 安装上使用 Hibernate 测试我的 Web 应用程序,然后将其部署到 Glassfish 服务器。

Tomcat 的连接数据源如下所示:

<property name="connection.datasource">java:comp/env/jdbc/mydb</property>

玻璃鱼路径:

<property name="connection.datasource">jdbc/mydb</property>

是否可以合并这两个设置,以便我可以将一个 hibernate.cfg.xml 用于我的运行时环境?

【问题讨论】:

    标签: hibernate tomcat glassfish jndi


    【解决方案1】:

    更好的方法是使用两个(或更多)hibernate.cfg.xml 配置文件,每个环境和/或数据库一个。

    两个文件的大部分配置文件可以相同(尤其是映射文件的引用)。只有连接字符串、用户/密码或数据库驱动程序等部分不同(如果需要)。

    然后将配置文件的路径和文件名作为应用程序的启动参数,并在Configuration.configure(&lt;filename&gt;) 中使用。

    优点是:
    - 不同的连接字符串没有问题
    - 测试和生产使用不同的密码没有问题
    - 可以使用不同的数据库(例如 Oracle 和 MySQL)。
    - 如果表仅在一个环境中更改,您可以轻松引用不同的映射文件
    => 并且所有这一切都在两种环境中使用相同的 Java 代码。

    【讨论】:

    • 感谢您的提议。这种方法有一个明显的缺点。对休眠配置的每次更改都必须进行两次。容易出错,不方便开发环境。
    【解决方案2】:

    通过复制和粘贴,使用两个休眠配置文件并不是真正的问题。

    如果您绝对希望只有一个文件,您可以创建 hibernate.cfg.xml,在这两种环境中使用相同的所有内容,并包含仅包含连接字符串的第二个文件。

    例如在 hibernate.cfg.xml 中这样:

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" [
       <!ENTITY database_connection SYSTEM "databaseConnection.xml">
      ]>
    
    <hibernate-configuration>
    
      <session-factory>
    
    &database_connection;
    
        <property name="show_sql">true</property>
    
        <mapping resource="..."/>
        ...
        <mapping resource="..."/>
      </session-factory>
    </hibernate-configuration>
    

    然后您需要第二个文件databaseConnection.xml,其中包含连接信息,并在读取配置时自动包含在内。该文件有两个版本,一个用于 Tomcat,一个用于 Glassfish。如果更改映射,只需在一个文件中进行,但在交付软件时必须注意第二个文件。

    我个人认为有两个hibernate.cfg.xml文件的版本更简单,更灵活。

    (顺便说一句,包括文件是 xml 功能,不是休眠功能。)

    【讨论】:

    • 是的,包括一个具有通用设置的 XML 文件对我来说可能是一种方法!谢谢你的建议。我不知道这个 xml 功能。
    猜你喜欢
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多