Есть ли что-то вроде загрузчика классов фильтрации Weblogic для Websphere - PullRequest
1 голос
/ 13 мая 2011

Я бы хотел использовать что-то вроде Filtering Classloader , чтобы предотвратить попадание определенных пакетов в контекст приложения и их отображение в Spring.

Изменение порядка загрузчика классов вызывает все виды неприятных проблем, поэтому я хотел бы попробовать этот маршрут.

Возможно ли достичь этого с помощью Websphere 6? Если нет, могу ли я заменить свой собственный загрузчик классов приложения и реализовать фильтр самостоятельно?

Ответы [ 3 ]

1 голос
/ 22 января 2014

bkail ответ правильный, WAS не имеет такой функции даже в своей последней общедоступной версии (8.5.5).

Я только что создал RFE, запрашивающий такую ​​функцию, поэтому, кто бы ни заинтересовался этим, пожалуйста, проголосуйтедля этого, что может увеличить вероятность того, что это будет реализовано: http://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=43936 (требуется IBM ID)

Тем временем, вы можете использовать изолированные общие библиотеки для переопределения любых конкретных классов (загрузка вышеупомянутого классауправление порядком - как parent_last - слишком грубое, поскольку оно влияет на порядок загрузки классов всего приложения или модуля). Создайте общую библиотеку с нужными jar-файлами на пути к классам, настройте ее как изолированную общую библиотеку, сослаться на нее из развернутого приложения (или модуля).).Смотрите здесь для полной документации http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.base.doc/ae/tcws_sharedlib.html

1 голос
/ 14 мая 2011

В WebSphere нет такого механизма фильтрации, и нет способа заменить загрузчик классов приложений. Вам придется использовать PARENT_LAST для переопределения классов, извините.

0 голосов
/ 18 мая 2017

Я как раз собирался отправить тот же вопрос. Но ответ был совершенно неудовлетворительным. Однако я проверил запрос от Петра Х на IBM DeveloperWorks, и IBM реализовала эту функцию (Огромное спасибо, Петр!):

"WebSphere Application Server V8.5.5.7 (= Fixpack 7) получил возможность предотвращать отображение пакетов из загрузчика классов сервера для приложений. Это было предоставлено в документе" ИЗОЛЯЦИЯ УДАЛЕННЫХ ИСКУССТВ ИЗ ПАКЕТОВ OSS " и задокументировано в «Изоляция пакетов программного обеспечения с открытым исходным кодом» .

Прилагаемые ссылки описывают механизм путем настройки always-protected packages. Вы в основном должны сделать следующее:

  1. В разделе Инфраструктура сервера на странице настроек сервера в административной консоли выберите Java и управление процессами> Определение процесса.
  2. Выберите виртуальную машину Java.
  3. Определите следующие системные свойства в разделе общих аргументов JVM следующим образом: -Dcom.ibm.ws.classloader.server.alwaysProtectedPackages=org.bouncycastle. Пожалуйста, не то, что последняя точка "." действительно важно, иначе все будет игнорироваться! Несколько пакетов могут быть добавлены через запятую ","
  4. Нажмите Применить, ОК и сохраните изменения. Убедитесь, что синхронизация файлов выполнена до перезапуска серверов. Перезапустите WebSphere Application Server, чтобы изменения вступили в силу.
  5. Изучите native_stdout.log и найдите системные свойства, которые были определены ранее. Например, когда вы указываете всегда защищенный пакет org.bouncycastle., Могут появляться такие операторы, как: ProtectionMetaData.clinit: system property: com.ibm.ws.classloader.server.alwaysProtectedPackages=org.bouncycastle.
...