Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JBoss classpath ordering / 5 сообщений из 5, страница 1 из 1
15.01.2014, 17:32
    #38527331
Anatoly D
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JBoss classpath ordering
Привет,

есть сторонняя библиотека и веб апп, который деплоится в jboss, есть класс com.Main.

Я хочу ( и не спрашивайте зачем ) создать такой же класс com.Main, который потом скомпилится и по задумке "заместит" оригинальный класс.

Вопрос:

Как добиться того, чтобы мой класс был загружен первым? А не клас из стороннего джарника...

Плиз хелп.
...
Рейтинг: 0 / 0
15.01.2014, 17:36
    #38527340
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JBoss classpath ordering
Anatoly D,

У вас есть проблема. Но вместо того чтобы рассказать о ней и подумать над вариантами как её решить, вы уже предлагаете одно из решений, как будто других вариантов уже и нет.
com.Main находится внутри библиотеки, которую вы почему-то менять не можете? Она подписана? JBoss-ом куда это нужно деплоить вы владете или нет?
...
Рейтинг: 0 / 0
15.01.2014, 17:51
    #38527365
Anatoly D
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JBoss classpath ordering
Blazkowicz,


менять могу. Но это error prone. Ибо я-то поменяю в таргет библиотеке, придёт на неё сервис пак 2, и снова там объявится этот класс. Да и вообще могут быть варианты разные для разных версий. К деплойменту джбосса доступ есть.

А что Вы предлагаете? Я ж готов к диалогу, чё нет-то.
...
Рейтинг: 0 / 0
15.01.2014, 18:03
    #38527379
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JBoss classpath ordering
Anatoly D менять могу. Но это error prone. Ибо я-то поменяю в таргет библиотеке, придёт на неё сервис пак 2, и снова там объявится этот класс. Да и вообще могут быть варианты разные для разных версий. К деплойменту джбосса доступ есть.
Не вижу связи. Обновится библиотека, ваш собственный класс станет таким же не актуальным. Какая разница внутри ли он библиотеки или снаружи?

Anatoly DА что Вы предлагаете? Я ж готов к диалогу, чё нет-то.
По-хорошему. Пишется отдельный модуль в проекте, с отдельным классом. В процессе сборки библиотека патчится классами из этого модуля. Желательно ещё и пару тестов написать, чтобы несовместимость с новыми версиями раньше выявить.
Единственный минус - подход не будет работать, если jar подписан. С другой стороны, если вы контролируете JBoss, то и подписи проверять некому, можно смело их выкинуть, если лицензия позволяет.

Геморный вариант - добавить агента, который при загрузке класса библиотеки внесет в байт-код нужные изменения. Сложно написать. Но не сложно поддерживать. Если изменения не большие, то и способ довольно простой.
Минус - если класс нужен радикально другой, с другими методами, то этот вариант ещё и работать не будет без JRebel.

Можно свой класс кинуть в либы JBoss, в commons, в JDK (не рекомендую) и даже прописать в bootstrap classpath в скриптах запуска JBoss.
Минусы есть.
- не будет работать для sealed jar. Может сломаться package private доступ. (Не помню точно, кажется это только для sealed)
- в JBoss хитрая система ClassLoader-ов, чтобы изолировать JEE модули. Поэтому если ваш класс будет вне JEE модуля, то JBoss вполне сможет загрузить этот класс ещё раз из JEE модуля. Что чревато тем что такой фикс не будет работать без удаления оригинального класса.
...
Рейтинг: 0 / 0
16.01.2014, 12:19
    #38527996
Anatoly D
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JBoss classpath ordering
Blazkowicz,

ага. спасиба
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JBoss classpath ordering / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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