|
|
|
External Classloader и glassfish/payara 4
|
|||
|---|---|---|---|
|
#18+
В каталоге jdk/lib/ext есть файл JCPxml.jar, у нее есть зависимость от apache xml security (xmlsec-1.5.2.jar) - данная зависимость не кладется в jdk/lib/ext, а кладется в .war-ку Под данной jdk запущен glassfish/payara. В моем приложении.war есть sun-web.xml с class-loader delegate=false. так, вот, если я не кладу JCPxml.jar в свою war-ку, то получаю ошибка NoClassDefFound файла из xmlsec.jar... вывел логи класслоудера: автор[Loaded my.package.Crypto from file:/opt/payara/payara41/glassfish/nodes/localhost-payaradomain/instance1/applications/MyWar/WEB-INF/lib/MyCryptoLib.jar] [Loaded ru.CryptoPro.JCPxml.Consts from file:/usr/java/jdk1.8.0_60/jre/lib/ext/JCPxml.jar] [Loaded ru.CryptoPro.JCPxml.XmlInit from file:/usr/java/jdk1.8.0_60/jre/lib/ext/JCPxml.jar] Почему glassfish не грузит xmlsec-1.5.2.jar из war-ки? ведь стоит опция class-loader delegate=false? Есть мысли, что в данном случае JCPxml.jar - подгрузил external classloader, соответсвенно xmlsec-1.5.2.jar - тоже должен искать он, а если не нашел (т.к. его нету в jdk/lib/ext), то передать системному класслоудеру и так до глассфишевского? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2017, 10:18 |
|
||
|
External Classloader и glassfish/payara 4
|
|||
|---|---|---|---|
|
#18+
Ваш параметр delegate не влияет на саму иерархиую загрузчиков вообще никак. Он только меняет очередность поиска. В иерархии же jdk/lib/ext является одним из родителей любых загрузчиков JEE контейнера. Поэтому классы JDK не могут напрямую видеть эти классы. Только через SPI и другие аналогичные механизмы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2017, 10:35 |
|
||
|
External Classloader и glassfish/payara 4
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВаш параметр delegate не влияет на саму иерархиую загрузчиков вообще никак. Он только меняет очередность поиска. В иерархии же jdk/lib/ext является одним из родителей любых загрузчиков JEE контейнера. Поэтому классы JDK не могут напрямую видеть эти классы. Только через SPI и другие аналогичные механизмы. по данной статье https://habrahabr.ru/post/103830/ автор1) Системный загрузчик попытается поискать в кеше класс Student. _1.1) Если класс найден, загрузка окончена. _1.2) Если класс не найден, загрузка делегируется загрузчику расширений. 2) Загрузчик расширений попытается поискать в кеше класс Student. _2.1) Если класс найден, загрузка окончена. _2.2) Если класс не найден, загрузка делегируется базовому загрузчику. 3) Базовый загрузчик попытается поискать в кеше класс Student. _3.1) Если класс найден, загрузка окончена. _3.2) Если класс не найден, базовый загрузчик попытается его загрузить. __3.2.1) Если загрузка прошла успешно, она закончена ;) __3.2.2) Иначе управление предается загрузчику раширений. _3.3) Загрузчик расширений пытается загрузить класс. __3.3.1) Если загрузка прошла успешно, она закончена ;) __3.3.2) Иначе управление предается системному загрузчику. _3.4) Системный загрузчик пытается загрузить класс. __3.4.1) Если загрузка прошла успешно, она закончена ;) __3.4.2) Иначе генерируется исключение java.lang.ClassNotFoundException. я чото не пойму, от ext class-loader спускается вниз до System Classloader, даже если я в classpath пропишу путь до xmlsec.jar - все равно не находит... Что-то я не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2017, 10:41 |
|
||
|
External Classloader и glassfish/payara 4
|
|||
|---|---|---|---|
|
#18+
я правильно понял, что подход когда все зависимости кладутся в .war-ку - является корректным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2017, 13:09 |
|
||
|
External Classloader и glassfish/payara 4
|
|||
|---|---|---|---|
|
#18+
EDUARD_2я правильно понял, что подход когда все зависимости кладутся в .war-ку - является корректным? Нет. Есть ситуации когда зависимости стоит держать в JEE контейнере. Например, JDBC драйвера. Но /jdk/lib/ext использовать не стоит, впрочем, как и Glassfish. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2017, 13:14 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39533247&tid=2122551]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 393ms |

| 0 / 0 |
