Это хорошая идея иметь окончательную статическую константу в сервлете Java? - PullRequest
2 голосов
/ 16 января 2012

У меня есть сервлет Java, где я хочу использовать JSON-анализатор Джексона .

Вместо того, чтобы создавать его несколько раз (я использую его в разных функциях в сервлете), безопасно ли объявлять его как «статический финал» и повторно использовать «ObjectMapper» для разных методов в одном и том же сервлете?

Вот пример того, как он у меня есть:

public class ServiceExample extends HttpServlet {

  private final static ObjectMapper jsonHelper = new ObjectMapper();

  public void doSomething() {
    jsonHelper.writeValueAsString(new SomeObject());
  }

  public void doSomethingElse() {
    jsonHelper.writeValueAsString(new SomeOtherObject());
  }
}

Мне показалось, что я где-то читал, что это нормально, но я хотел перепроверить.

Редактировать

В соответствии с этим он является потокобезопасным, если он настроен перед использованием.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Сервлеты, как правило, в любом случае являются синглетонами, поэтому не имеет никакого значения, если вы настроили их как:

public class ServiceExample extends HttpServlet {

  private final ObjectMapper jsonHelper = new ObjectMapper();

}

. Если вы располагаете несколькими <servlet> записями для одного и того же сервлетакласс в web.xml приведет к одному экземпляру сервлета для каждого элемента <servlet>.

Важно выяснить, является ли ObjectMapper от Джексона поточно-безопасным.

2 голосов
/ 16 января 2012

Итак, вы настраиваете его в статическом методе инициализации внутри вашего класса Тогда это не должно быть проблемой.

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