2010-08-12 52 views
1

这仍然是一个悬而未决的问题。希望有一天我会得到答案。感谢所有回复的人。如何在Hibernate XML配置文件中使用属性表示

我的问题很简单。如何在Hibernate XML配置文件中使用$ {catalina.home}或$ {catalina.base}属性?

这里是我的示例配置文件:

<hibernate-configuration> 
<session-factory> 
    <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> 
    <property name="hbm2ddl.auto">update</property> 
    <property name="show_sql">false</property> 
    <property name="cache.use_second_level_cache">false</property> 

    <mapping jar="/opt/tomcat/apache-tomcat-5.5.29/webapps/MyApp/WEB-INF/lib/MyHibernateMaps.jar" /> 
</session-factory> 

我当前的配置文件是好的。但我想至少抽象出tomcat的位置。如果不使用这个的:

<mapping jar="/opt/tomcat/apache-tomcat-5.5.29/webapps/MyApp/WEB-INF/lib/MyHibernateMaps.jar" /> 

我想将其转换成这样:

<mapping jar="${catalina.base}/webapps/MyApp/WEB-INF/lib/MyHibernateMaps.jar" /> 

我想直接这样做,但我得到了一个错误的jar文件丢失或无法找到。我谷歌搜索,但无济于事。

为什么我需要这样的设置是因为我在三台机器上部署我的应用程序。一个是生产。另一个是发展。最后一个是localhost(在家)。这三台机器在三个不同的位置安装了tomcat。

因此,每次我部署我的应用程序,我必须修改线/opt/tomcat/apache-tomcat-5.5.29/以匹配机器上的tomcat位置。

任何想法?

此外,它是可取的使用catalina.home或catalina.base?我只在本地主机上使用一个tomcat。但是在开发和生产上,我们有两个雄猫(当然在两个不同的地方)。

感谢

顺便说一句,这Hibernate配置文件使用Spring的XML配置文件中:

<bean id="appSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource"> 
    <ref local="appDataSource"/> 
    </property> 
    <property name="configLocation"> 
      <value>${hibernate.config}</value> 
    </property> 
</bean> 

回答

1

你不需要这个。假设JAR位于应用程序类路径中(这是WAR的/WEB-INF/lib目录下的JAR的情况),只需使用:

<mapping jar="myapp.jar" /> 
+0

哦,真的。我从来没想过那个。谢谢回复。我一定会尝试一下,然后回到这里。 – chris 2010-08-12 23:25:46

+0

我尝试了一下本地机器和开发机器的建议。但是,它没有工作。我得到了以下错误: 在ServletContext资源[/WEB-INF/appConfig.xml]中定义名称为'appSessionFactory'的Bean时创建错误:调用init方法失败;嵌套的异常是org.hibernate.InvalidMappingException:无法读取从jar中映射文档:MyApp.jar – chris 2010-08-12 23:56:13

+0

我忘记了注意到hibernate配置文件是在Spring XML配置文件中声明的SessionFactory属性。 – chris 2010-08-12 23:57:21

相关问题