Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Библиотеки в папке сервера или в папке приложения


Автор: Ares4322 13.1.2012, 14:35
Доброго времени суток!
Есть Tomcat, на котором крутится приложение и других, кроме еще админского, на нем нет и не будет.
Я хотел бы загрузить библиотеки приложения в папку томката, чтобы не гонять их по сети при загрузке приложения.
Какие подводные камни могут быть у такого решения?

Автор: Stolzen 13.1.2012, 14:48
Можно напороться на jar hell, но при должной аккуратности все будет нормально.

Автор: Ares4322 13.1.2012, 15:05
А в каком случае это будет? Если я на девел-машине собрал с одними библиотеками, а запускаю приложение с другими?
Я так понимаю, если так не делать, то все будет гуд. Я прав?

Автор: jk1 14.1.2012, 08:25
Цитата

Я так понимаю, если так не делать, то все будет гуд. Я прав?


Для загрузки классов из папки сервера и из папки приложения будут использоваться разные загрузчики классов:

1. Классы из папки приложения будут видеть классы из папки сервера, а вот обратное не верно. Если зависимости только в одну сторону, то это не составит проблем.
2. Два одинаковых класса загруженных разными загрузчиками с точки зрения JVM считаются разными. То есть, если случайно один и тот же класс окажется в двух местах одновременно, то могут возникать проблемы каста к собственному классу и тому подобные вещи.
3. Можно серьезно накосячить с Apache Commons Logging, который вообще плохо относится к раскидыванию собственных классов по разным загрузчикам.

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

Автор: Ares4322 15.1.2012, 17:18
Про то,что классы разные,если разные за загрузчики- я знал. 
Тогда ,видимо, оставлю, как есть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)