2013-02-18 2 views
0

У нас есть веб-приложение, основанное на JAX-RS &, для этого потребуется прочитать некоторую конфигурацию из файла свойств. Я написал вспомогательный класс ConfigurationProvider, который загружает эти свойства. Этот класс будет использоваться в нескольких классах. Мой вопрос: & где должен быть инициализирован ConfigurationProvider?Когда инициализировать свойства в Java EE webapp?

public class ConfigurationProvider { 
private static Properties properties; 
private static ConfigurationProvider config; 
private static final String XYZ_PROPERTIES = "xyz.properties"; 

static { 
    config = new ConfigurationProvider(); 
} 

private ConfigurationProvider() { 
    try { 
     InputStream in = this.getClass().getClassLoader(). 
       getResourceAsStream(XYZ_PROPERTIES); 
     properties = new Properties(); 
     properties.load(in); 
    } catch(IOException ie) { 
     ie.printStackTrace(); 
    } 
} 

public static ConfigurationProvider getInstance() { 
    return config; 
} 

public String get(String propname) { 
    return properties.getProperty(propname, null); 
} 
    } 

С уважением

+0

Создать Singleton из 'ConfigurationProvider', если вы не хотите, чтобы всегда его экземпляр и имеют кэш' ResourceBundle' на основе их 'Locale'. Таким образом, вам не нужно всегда перезагружать файл свойств каждый раз, когда вам это нужно. –

+0

@BuhakeSindi, я думаю, ConfigurationProvider уже singleton. Я инициализирую config в статическом блоке и есть частный конструктор. Единственный способ получить экземпляр - это метод getInstance. –

ответ

1

http://docs.oracle.com/javaee/5/api/javax/annotation/PostConstruct.html

Вы можете использовать метод PostConstruct в классе ресурсов JAX-RS.

@PostConstruct 
private void init() { 
    /initialize... 
} 

Однако я не уверен, что приложение, определяющее одноэлемент, является хорошей идеей. Вместо этого вы можете использовать компонент ApplicationScoped, если вы используете среду Java EE.

http://docs.oracle.com/javaee/6/api/javax/enterprise/context/ApplicationScoped.html

+0

Будет ли это доступно для доступа к ConfigurationProvider в методе помощников, кроме класса ресурсов? –

+0

Я не уверен, что приложения, определяющие одиночные точки на сервере Java EE, являются хорошей практикой. Вместо этого вы можете использовать компонент ApplicationScoped. Я отредактирую свой ответ, чтобы это отразить. – chitakasa

+0

Я не думаю, что ApplicationScoped применим для Java EE 5. Что мы имеем для EE5 –

Смежные вопросы