Загрузка переменной только один раз в стойках 1 Класс действия - PullRequest
0 голосов
/ 14 июня 2010

У меня есть экземпляр объекта действия Structs, который загружает переменную из файла свойств. Я хочу, чтобы это происходило только при первом вызове действия, поэтому в последующих выполнениях его чтение из памяти. Есть намеки? Спасибо.

1 Ответ

0 голосов
/ 15 июня 2010

На первый взгляд я вижу как минимум два способа сделать это:

1 - прочитайте значение из файла свойств и сохраните его как статическое поле в вашем классе действий. Статический инициализатор должен делать для загрузки пакета и чтения значения. Когда ваш класс Action будет загружен JVM, вы получите свое значение, а затем просто используете его оттуда.

public class YourAction extends Action {
  private static String value;
  static {
    // value = load code here
  }
  ...
}

Поскольку у вас нет доступа к возможностям Struts, когда он загружен, я думаю, вам нужно будет что-то вроде следующего, чтобы прочитать ваше значение:

ResourceBundle.getBundle("com/some/package/bundle").getString("some_key")

2 - установите ваше значение в экземпляре Action и загрузите вместе с вашим конструктором, а затем просто используйте его:

public class YourAction extends Action {
  private String value;
  public YourAction() {
    super();
    //value = load code here
  }
  ...
}

Это будет работать, потому что Struts использует один экземпляр Action для обслуживания всех запросов, поэтому все запросы будут видеть ваше значение (т. Е. Классы Struts Action не являются потокобезопасными, они ведут себя как сервлеты).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...