Что такое путь ресурсов пакета в загрузчике классов?Как мне получить доступ к этому пути? - PullRequest
0 голосов
/ 21 мая 2018

У меня есть веб-приложение, развернутое в Websphere, и обнаружено, что существуют конфликтующие файлы.Чтобы найти путь конфликтующего класса, я добавил следующий код

ClassLoader classLoader = MyClass.class.getClassLoader();
URL resource = classLoader.getResource("org/apache/http/conn/ssl/AllowAllHostnameVerifier.class");
System.out.println(resource);

. Когда я проверяю файл журнала IBM System.out, я вижу приведенный ниже путь для ресурса.Я не уверен, что путь к пакету ресурсов.Я хотел бы знать, как я могу получить доступ к расположению ниже?

bundleresource://85.fwk734572965/org/apache/http/conn/ssl/AllowAllHostnameVerifier.class

1 Ответ

0 голосов
/ 21 мая 2018

URL-адреса "bundleresource" представляют записи из загрузчика классов платформы OSGi.Номер соответствует номеру пакета в конфигурации OSGi, который можно найти, открыв консоль OSGi (из каталога WAS_HOME / bin, osgiConsole.sh|bat -server <servername>) и выполнив команду "ss", которая перечисляет пакеты вместе с их состояниеми числовой идентификатор.

Предполагая, что вы видите конфликт во время выполнения из-за загрузки классов (на самом деле не извлекаете эти классы через getResource), я с большой уверенностью скажу, что вы выбираете конфликтующие классы.из предварительной банки JAX-RS, WAS_HOME/plugins/com.ibm.ws.prereq.jaxrs.jar.В то время как jar сделал свою копию Apache HTTP видимой для приложений.Эта видимость была удалена в более позднем пакете исправлений, если вы сможете исправить установку до последнего уровня обслуживания.

Обратите внимание, что даже если вы перейдете к более новому пакету исправлений с этим исправлением, ваш тестовый набор, вероятно, все еще будетпоказать то же самое - я не думаю, что getResource() подвергается той же фильтрации, что и loadClass(), поэтому вы все равно сможете получить доступ к файлу .class таким образом.Это может помочь с проблемами, которые вы видите во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...