2014-02-06 86 views
0

我需要閱讀glassfish 4應用程序中的屬性文件。該文件需要位於應用程序中的某個位置(即不在文件系統中的某個隨機位置)。閱讀glassfish上的屬性文件4

如果有問題,我正在用eclipse開發,這個項目是用maven構建的,而這個工件是一場戰爭。

在我看來,爲了完成這項工作,我需要知道三件事情。

1)原始文件需要在哪裏?

2)該文件需要在哪裏結束?

3)如何讀取它?在

WEB-INF/classes/version.properties 

我不知道這是否是正確的位置

src/main/resources/version.properties 

該結束了:

到目前爲止,我創建的文件。

基於類似的問題,我已經定義了一個的ServletContextListener:

public class ServletContextClass implements ServletContextListener { 
... 
    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     ServletContext ctx = arg0.getServletContext(); 
     InputStream istream = ctx.getResourceAsStream("version.properties"); 

     // at this point, istream is null 

     Properties p = new Properties(); 
     p.load(istream); 
    } 
} 

我不知道如果我有錯地方的文件,如果我讀錯了,或兩者兼而有之。

更新:下面的 「作品」:

@Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     ResourceBundle bundle = ResourceBundle.getBundle("version"); 
     if (bundle == null) { 
      logger.info("bundle is null"); 
     } else { 
      logger.info("bundle is not null"); 
      logger.info("version: " + bundle.getString("myversion")); 
     } 
    } 

不過,我不認爲這是正確的解決方案。 Bundles是用於語言環境支持的,並且不屬於該類別。

更新2:我更正了文件結束的位置。

回答

1

1)把version.properties文件中

src/main/resources/version.properties 

似乎是正確的。

2)目標的戰爭,該文件確實在事實上結束了在

WEB-INF/classes/version.properties 

3)來讀取文件:我已經有一個了ServletContextListener定義。如果你不需要定義一個並在web.xml中配置它。這是我的ServletContextListener的一部分:

package com.mycompany.service; 

    public class ServletContextClass implements ServletContextListener { 
     @Override 
     public void contextInitialized(ServletContextEvent arg0) { 
      ServletContext ctx=arg0.getServletContext(); 

      try { 
       Properties p = new Properties(); 
       InputStream istream = ctx.getResourceAsStream("/WEB-INF/classes/version.properties"); 
       p.load(istream); 
       Properties sysProps = System.getProperties(); 
       sysProps.putAll(p); 
      } catch (IOException e) { 
       logger.error("Error reading " + "version.properties"); 
      } 
     } 
    } 

它被配置成與這一塊中的web.xml的:

<listener> 
    <listener-class>com.mycompany.service.ServletContextClass</listener-class> 
</listener>