Класс утилиты Java по сравнению с [закрытым] сервисом

Используйте lighttpd mod_auth. https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModAuth

server.modules += ("mod_auth")
auth.require = ( "" =>
                 (
                   "method"  => "extern",
                   "realm"   => "certificate",
                   "require" => "user=agent007|user=agent008" 
                 )
               )

Необходимо указать допустимые значения SSL_CLIENT_S_DN_CN в user=...|user=...

36
задан djunforgetable 16 May 2009 в 01:29
поделиться

5 ответов

Различное поведение может быть получено с использованием разных служебных объектов. Статические методы в служебном классе нельзя заменить. Это чрезвычайно полезно для тестирования, изменения реализаций и других целей.

Например, вы упоминаете CryptoUtil с методом encrypt . Было бы чрезвычайно полезно иметь разные объекты, которые могли бы поддерживать разные стратегии шифрования, разных получателей сообщений и т. Д.

23
ответ дан 27 November 2019 в 06:12
поделиться

Вы не можете переопределить статический метод, что может стать огромной проблемой, если вы хотите реализовать свою службу двумя разными способами и переключаться между ними. По этой причине я бы ограничил использование статических служебных классов простыми вещами, которые «никогда» (для достаточно длинного значения «никогда» :)) не нужно делать более чем одним способом.

Я хочу реализовать ваш сервис двумя разными способами и переключаться между ними. По этой причине я бы ограничил использование статических служебных классов простыми вещами, которые «никогда» (для достаточно длинного значения «никогда» :)) не нужно делать более чем одним способом.

Я хочу реализовать ваш сервис двумя разными способами и переключаться между ними. По этой причине я бы ограничил использование статических служебных классов простыми вещами, которые «никогда» (для достаточно длинного значения «никогда» :)) не нужно будет делать более чем одним способом.

6
ответ дан 27 November 2019 в 06:12
поделиться

Разница в том, что классы обслуживания могут иметь состояние. И под состоянием я подразумеваю диалоговое состояние. Рассмотрим условную систему упорядочивания.

interface OrderSystem {
  void login(String username, String password);
  List<Item> search(String criteria);
  void order(Item item);
  void order(Item item, int quantity);
  void update(Item item, int quantity);
  void remove(Item item);
  void checkout();
  Map<Item, Integer> getCart();
  void logout();
}

Это можно сделать с помощью сессионных компонентов с отслеживанием состояния (в качестве одного примера), хотя в этом случае аутентификация, вероятно, будет охватывать более традиционные механизмы EJB.

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

Служба имеет гораздо более широкое значение, которое включает, но не ограничивается:

  • с сохранением состояния;
  • дистанционное; и
  • зависит от реализации (то есть через интерфейс).

На мой взгляд, наилучшая практика - просто использовать статические методы в качестве удобных (особенно учитывая отсутствие в Java методов расширения). Услуги намного богаче.

10
ответ дан 27 November 2019 в 06:12
поделиться

Я думаю, что не существует жестких правил.

Я обычно использую статические методы для функций, требующих небольшого количества параметров и которые могут быть выполнены за один вызов метода. Пример:

  • вычислить хеш-значение для строки
  • преобразовать дату в стандартное представление

Если функциональность требует много параметров и создается несколько связанных результатов, то более практично иметь класс, который может принимать общие параметры в своем конструкторе с несколькими методами, которые выполняют фактическое действие.

Типичный пример: соединение с базой данных, которое вы сначала подключаете, затем используете для выполнения запроса, а затем используете для получения результата ...

1
ответ дан 27 November 2019 в 06:12
поделиться

Я отвечал на этот вопрос где-то раньше, но я обнаружил, что очень легко изменить поведение службы - преобразовать ее в несколько служб - где требуется довольно существенный рефакторинг, если вы используете статический класс.

Если это единственное различие (а я считаю, что это так), тогда никогда не имеет смысла использовать статические классы.

Каждый раз, когда кто-то говорит: «Никогда и никогда не будет. должно быть больше 1 таких ", закодируйте n из них.

0
ответ дан 27 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: