2010-08-12 86 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

相關問題