Я плохо знаком с Jboss, но у меня есть несколько веб-приложений, каждая пружина использования - в спящем режиме и другие библиотеки с открытым исходным кодом и портлеты, так в основном теперь каждый военный файл включает те файлы банки. Как я перемещаю эти банки в общее местоположение так, чтобы я не помещал их в каждый военный файл? Я предполагаю, что местоположение server/default/lib
, но я не уверен.
Кроме того, как это отличается, чтобы иметь те банки в WEB-INF/lib
по сравнению с. JBOSS/server/default/lib
? Я столкнусь с какой-либо classloader проблемой?
Также мне сохранили статические данные в статических полях как Singleton
, они будут совместно использованы через все ВОЕННЫЕ файлы?
Классировка:
Вы правы, поставьте .jar
, до jboss / server /
или jboss / lib
.
jboss jboss поставляется с комплектными зимующими, которые тестируются с этим в качестве версии.
См.
jboss-6.0.0-Snapshot \ Server \ default \ conf \ jboss-service.xml
:
<server>
<!-- Load all jars from the JBOSS_HOME/server/<config>/lib directory and
the shared JBOSS_HOME/common/lib directory. This can be restricted to
specific jars by specifying them in the archives attribute.
TODO: Move this configuration elsewhere
-->
<classpath codebase="${jboss.server.lib.url}" archives="*"/>
<classpath codebase="${jboss.common.lib.url}" archives="*"/>
</server>
также см.:
DifferenceUSECASES web-inf / lib
и jboss / server / default / lib
:
Libs в Web / lib
Приходите с вашей войной и видны только в этой войне.
Если у вас есть другой модуль, например EJB JAR, они не будут видны из этого, и вы получите ClassnotFoundException
или (если у вас есть класс в нескольких местах) ClassCastexexception
.
libs в jboss-as / server /
видны для всего сервера, таким образом, все развернутые приложения и их модули. Тем не менее, (IIRC) у них нет приоритета, поэтому, если вы принесете это Лимерам Э.Г. В войне, но не в банке EJB, вы можете в конечном итоге использовать две разные версии, которые нежелательны (скорее всего, приведет к вышеуказанному ClassCasteException
).
Поведение нагрузки класса может быть настраивается несколько способов, см. E.G. jboss wiki .
Статические данные:
Не полагайтесь на статические поля в Java EE, что приносит неприятности. Например,. Та же класс может быть загружен разными классовыми загрузками, поэтому будут несколько экземпляров этих статических значений.
Если вы хотите поделиться данными между ними войны, используйте внешнее хранилище - база данных, файл (с синхронизацией, если вы пишете ему), кэш JBoss и т. Д.
JBOSS/server/default/lib работает нормально.
Все банки в этой папке будут загружены в JBoss.