Я запускаю несколько приложений сервлета в Tomcat (5.5). Все сервлеты используют общий ресурс фабрики, который делится с помощью JNDI. В данный момент я могу получить все работающее включением ресурса фабрики как GlobalNamingResource в файле /conf/server.xml, и затем наличие файла META-INF/context.xml каждого сервлета включает ResourceLink в ресурс. Отрывки от XML-файлов включены ниже.Примечание: Я не настолько знаком с котом, таким образом, я не говорю, что это - хорошая конфигурация!!!
Однако я теперь хочу смочь, устанавливают эти сервлеты в несколько экземпляров кота автоматически с помощью об/мин. об/мин Во-первых скопирует ВОЙНЫ в каталог веб-приложений и банки для фабрики в общий каталог / каталог lib (который прекрасен). Но это должно будет также удостовериться, что ресурс фабрики включен как ресурс для всех сервлетов.
Каков лучший способ, добавляет ресурс глобально? Я не слишком увлечен записью сценария, который входит в файл server.xml и добавляет в ресурсе тот путь. Есть ли какой-либо способ для меня добавить в нескольких файлах server.xml так, чтобы я мог записать новый файл server-app.xml, и он свяжет мои настройки к server.xml? Или, лучше все еще для добавления этого ресурса JNDI ко всем сервлетам, не используя server.xml вообще?
p.s. Перезапуск сервера не будет проблемой, таким образом, я не буду возражать, если изменения не становятся взятыми автоматически.
Спасибо
Отрывок из server.xml
<!-- Global JNDI resources -->
<GlobalNamingResources>
<Resource name="bean/MyFactory"
auth="Container"
type="com.somewhere.Connection"
factory="com.somewhere.MyFactory"/>
</GlobalNamingResources>
Файл META-INF/context.xml всего сервлета
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<ResourceLink global="bean/MyFactory"
name="bean/MyFactory"
type="com.somewhere.MyFactory"/>
</Context>
Начиная с Tomcat 4, рекомендуется не помещать какую-либо информацию JNDI в файл server.xml . См. документацию Tomcat 5.5 :
Для Tomcat 5, в отличие от Tomcat 4.x, НЕ рекомендуется размещать элементы непосредственно в server.xml { {1}} файл. Это связано с тем, что это делает изменение конфигурации контекста более инвазивным, поскольку главный файл conf / server.xml не может быть перезагружен без перезапуска Tomcat.
Я знаю, что вы утверждаете, что не заботитесь об этом, но поверьте мне, ваша группа развертывания заботится, и группа обслуживания поблагодарит вас позже. Даже если это означает, что вы в конечном итоге благодарите себя.
Если вам нужно, чтобы настройки JNDI были общими для всех веб-приложений на сервере, вы должны поместить их в файл $ CATALINA_HOME / conf / context.xml. По всей вероятности, в этом месте уже будет существующий context.xml, но вы должны иметь возможность написать простое приложение для добавления узлов ресурсов через ваш любимый язык и любой построитель DOM, поставляемый в комплекте с ним. Или, если вы хотите придерживаться командной строки, ознакомьтесь с этой статьей , в которой приведены несколько сценариев оболочки для обработки XML, которые могут вам помочь.
Удачи!
Это не является прямым ответом на ваш вопрос, но не рассматривали ли вы возможность размещения всех конфигураций в файле context.xml, а не в server.xml? Это сделает ваше веб-приложение более самодостаточным, что, похоже, важно для ваших требований к развертыванию.
Я бы даже сказал, что стоит рассмотреть любой рефакторинг, необходимый для обеспечения полной самодостаточности ваших приложений, если это невозможно сделать в настоящее время.
Поработав над проектами, где я развертывал /common/lib JAR и общие ресурсы, и был укушен ими запутанными и тонкими способами (в конце концов, я выяснил, что это неизменно была моя собственная вина, не обвиняя здесь Tomcat), я теперь предпочитаю полностью защитный подход к своим веб-приложениям: держать их полностью независимыми.
Но, конечно, я не знаю всех ваших обстоятельств, просто некоторые предложения.