powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Упрощение работы с JNDI
25 сообщений из 28, страница 1 из 2
Упрощение работы с JNDI
    #38511505
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли какие-то простые способы получать значения с использованием JNDI без приседаний с ручной обработкой контекстов, отловом исключений для не заданных параметров и т.п.?

Интересует для применения в POJO, для которых @Resource вроде как не работает.

Цель: конфигурирование веб-приложений через .xml при наличие опциональных/не задаваемых параметров.

В идеале - класс-помощник, не бросающий исключения по поводу отсутствующих из запрашиваемых параметров, а возвращающий указанные значения по умолчанию.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38511514
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыть про JEE, юзать легковестные opensource фреймверки, либо Spring.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38511517
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512193
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется в виду использование Jndi Object Factory Bean?
Остальное по указанной ссылке как-то не сильно упрощает жизнь.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512245
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
_newcomer_Цель: конфигурирование веб-приложений через .xml при наличие опциональных/не задаваемых параметров.У Вас кластер или standalone-сервер? J2EE?
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512257
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
standalone сервер
Работает все на tomcat без полноценного AppServer.
Пишется новый функционал, требующий некоторого конфигурирования (указания для конкретного приложения путей в ОС с вспомогательными файлами).
Использование spring допустимо, пока рассматриваются варианты.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512473
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
_newcomer_standalone сервер
Работает все на tomcat без полноценного AppServer.Почему-бы тогда не .properties? Если Spring, то вообще удобно.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512482
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAПочему-бы тогда не .properties? Если Spring, то вообще удобно.
В одном контейнере может быть запущено несколько однотипных приложений с разными path.
Используются нераспаковываемые war-файлы.
т.е. одно и тоже приложение (реально один war-файл на диске) замаплены через контекст на разные <servername>/path1, <servername>/path2 и т.п.
У каждой копии есть ряд уникальных параметров, задающихся в момент ввода в работу очередной копии и потом меняющихся крайне редко (кол-во копий может изменяться со временем).
Применение JNDI и env entries в server.xml (хоть это и не рекомендуется) вполне удовлетворяют постановке.
Свести все эти копии одного приложения в одно и управлять уже внутри доступом к разным url на данный момент не представляется возможным.

Можете, исходя из этих уточнений, предложить структуру хранения уникальных параметров каждой копии через .properties и/или через Spring?
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512483
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_,

А в БД почему нельзя хранить?
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512485
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА в БД почему нельзя хранить?
БД на данный момент никак не задействована и не входит в требования к серверу.
Приложения обрабатывают большие объемы разнотипных файлов в локальной файловой системе.
Задействовать БД только ради конфигурирования в данный момент не рационально.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512747
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
_newcomer_В одном контейнере может быть запущено несколько однотипных приложений с разными path.
Используются нераспаковываемые war-файлы.
т.е. одно и тоже приложение (реально один war-файл на диске) замаплены через контекст на разные <servername>/path1, <servername>/path2 и т.п.Задеплойте WAR-архив под разными именами, т.е. в разные папки, в каждой папке свой property-файл. В чем проблема-то? Или хочется именно JNDI? Только непонятно, зачем это для standalone-сервера...
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38512860
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_В одном контейнере может быть запущено несколько однотипных приложений с разными path.
Используются нераспаковываемые war-файлы.
т.е. одно и тоже приложение (реально один war-файл на диске) замаплены через контекст на разные <servername>/path1, <servername>/path2 и т.п.
У каждой копии есть ряд уникальных параметров, задающихся в момент ввода в работу очередной копии и потом меняющихся крайне редко (кол-во копий может изменяться со временем).
Применение JNDI и env entries в server.xml (хоть это и не рекомендуется) вполне удовлетворяют постановке.
Свести все эти копии одного приложения в одно и управлять уже внутри доступом к разным url на данный момент не представляется возможным.

Можете, исходя из этих уточнений, предложить структуру хранения уникальных параметров каждой копии через .properties и/или через Spring?
Желание понятное - разделить приложение и конфигурацию, без разпаковки/запаковки war etc. JNDI выглядит привлекательно, но крайне геморойно. Я пользую не properties, а Typesafe config . В вашем случае, все настроики по умолчанию могут бытъ в приложении ( classpath:/reference.conf ). Для настройки приложения надо будет положить в $TOMCAT_HOME/lib файл application.cfg, или указать его положение через системные свойства. А далее финт ушами:
Код: java
1.
2.
3.
String context = servletContext.getContextPath(); // надо удалить '/' , или как то еще преобразовать к имени конфигурации
Config conf = ConfigFactory.load();
Config applicationConfig = conf.getConfig(context).withFallback(conf)


application.cfg будет иметь вид:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
path1 = {
      some-setting = 10
}
path2 = {
      some-setting = 20
}
some-setting = 0 // для всех остальных
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513111
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAЗадеплойте WAR-архив под разными именами, т.е. в разные папки, в каждой папке свой property-файл. В чем проблема-то? Или хочется именно JNDI? Только непонятно, зачем это для standalone-сервера...
JNDI лишь очевидный способ пробросить что-то специфическое для контекста.
Кроме как плодить .properties есть еще варианты?

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

В моем варианте все крайне просто. "Деплой" делается вручную, так всем понятнее:
- Установил Java + Tomcat
- Скопировал .war файл в webapps
- Прописал указанные параметры <Host> в server.xml
- Инструкция по добавлению <Context ...> для каждой копии
Для обновления (происходит раз в 2-3 месяца):
- Скопировал новый .war файл (включающий номер версии) рядом в webapps (старый не удаляем)
- [опционально] Замена в server.xml имени файла у одной копии для тестирования, не понравилось - меняем назад
- Замена по всем контекстам старого имени на новое (смена номера версии в имени файла)
- Рестартовали контейнер

Предложенный вами вариант сильно усложняет процесс и может привести к рассинхронизации версий в копиях
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513116
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пролетевшийЖелание понятное - разделить приложение и конфигурацию, без распаковки/запаковки war etc. JNDI выглядит привлекательно, но крайне геморойно. Я пользую не properties, а Typesafe config
Спасибо, посмотрю что это. Выглядит вполне работоспособно вроде.
Правда все равно придется с нашей схемой развертывания в конфиг сервера лазить при обновлениях/добавлениях копий.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513117
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_БД на данный момент никак не задействована и не входит в требования к серверу.
Приложения обрабатывают большие объемы разнотипных файлов в локальной файловой системе.
Задействовать БД только ради конфигурирования в данный момент не рационально.
Едрить-колотить, чуть не упал со стула. То есть использовать JEE стэк для обработки локальных файлов это рационально, а БД - нет.
JEE вам нахрен вообще упал? Web морда нужна что ли?
Любой легковесный IoC контейнер на pure JSE решает вашу проблему без заморочек.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513125
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_,

context.xml можно размещать внутри war. И в нем при сборке прописывать версию. Тогда и context path будет включаить номер версии и не зависеть от имени самого war.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513127
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТо есть использовать JEE стэк для обработки локальных файлов это рационально, а БД - нет.
JEE вам нахрен вообще упал? Web морда нужна что ли?
Это промышленное legacy-приложение, потихоньку перетаскиваемое на новые рельсы. БД появиться, но позже.
По этому сразу "на вырост" тот самый стек
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513132
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczcontext.xml можно размещать внутри war. И в нем при сборке прописывать версию. Тогда и context path будет включаить номер версии и не зависеть от имени самого war.
Имеется в виду, что не нужно будет трогать server.xml при обновлении версий?
А как контейнер поймет, какую версию сейчас надо использовать?
Номер версии в имени файла - критичен для контроля выполнения операций админами предприятий.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513137
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_Имеется в виду, что не нужно будет трогать server.xml при обновлении версий?

Да.

_newcomer_А как контейнер поймет, какую версию сейчас надо использовать?

Контейнеру - пофиг, он хостит все активные модули. Он ничего не "использует". Поэтому вопрос я немного не понял.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513139
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_Это промышленное legacy-приложение, потихоньку перетаскиваемое на новые рельсы. БД появиться, но позже.
По этому сразу "на вырост" тот самый стек
Остаётся пожелать удачи. Я не сторонник JEE, учитывая что вы его только начинаете изучать, это ещё больший риск.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513150
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКонтейнеру - пофиг, он хостит все активные модули. Он ничего не "использует". Поэтому вопрос я немного не понял.
Сейчас <Host> задан с атрибутами autoDeploy="false" deployOnStartup="false" для контроля тех самых копий.
Пример текущих инструкций по развертыванию/обновлению я привел несколькими сообщениями ранее.
С учетом вашего замечания про версионность с context.xml - какие пункты этой инструкции и как должны видоизмениться (т.е. рассмотрим с точки зрения админа)?
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513159
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_newcomer_,

Инструкции выше не достаточно детальны чтобы я сразу смог понять что и зачем делается. Просто подсказываю, что context.xml можно хранить внутри .war, и не прописывать руками в server.xml. Если вам server.xml удобнее, я не против. Просто говорю что есть такое вариант.
Активировать\деактивировать модули можно через web админку. Если в приложении утечек в perm gen нет, то это проще чем, руками ковырять тот же server.xml.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513168
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczОстаётся пожелать удачи.
Спасибо!
BlazkowiczЯ не сторонник JEE, учитывая что вы его только начинаете изучать, это ещё больший риск.
Ок, а какой бы вариант вы бы выбрали для задачи:
- Приложение "с web-мордой", данными для которого являются кучка локальных (или расположенных где-то в сети, не важно) файлов.
- Каждая кучка - это тысячи (иногда десятки и сотни тысяч) файлов разных форматов общим объемом несколько (иногда много) гигабайт
- Таких кучек надо обрабатывать N штук одновременно.
- Обработка - поиск данных и формирование отчетов с использованием уже подготовленной индексной информации (данные когда-то, да и сейчас, продолжают формироваться другой промышленной системой).
- Перепаковать эти гигабайты файлов в другой формат - задача, на которую владельцы пойдут только в самый последний момент, да и поменять выходной формат источника нельзя, и процесс перепаковки был бы вечным, так что надо работать с чем есть.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513176
_newcomer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПросто подсказываю, что context.xml можно хранить внутри .war, и не прописывать руками в server.xml.
Это я знаю, но в server.xml ковыряются только уникальные параметры каждой копии и явное задание этих самых копий.
Ничего общего для всех копий сразу там не задается (это можно было бы сделать, как вы и говорить, через файл внутри war).
Как я уже говорил .war файл всего один на все копии.
BlazkowiczАктивировать\деактивировать модули можно через web админку. Если в приложении утечек в perm gen нет, то это проще чем, руками ковырять тот же server.xml.
На данный момент модуль всего один и админам проще "просто скопировать файл + рестарт контейнера", чем работа с непонятными (им) админками.
...
Рейтинг: 0 / 0
Упрощение работы с JNDI
    #38513180
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, то что вы используете пока только Tomcat уже радует. Это правильный путь.
Я бы разделил web морду и процесс обработки файлов в максимально независимые модули.
Spring MVC заменит вам возню с JEE API, а Spring IoC даст возможность конфигурирования.

Правда, теперь я совсем утратил понимание что общего должно быть у разных версий, что вы собрались хранить именно в JNDI?
Общий конфиг на любую версию? Или у каждой версии свой конфиг? Или как?
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Упрощение работы с JNDI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]