Как я могу использовать Apache CXF 3.X и WSS4J 2.X из моего проекта уха, а не CXF и WSS4J (более старые), которые установлены в модулях JBoss 6.3.0 EAP?

В нашем java-приложении мы должны использовать библиотеки apache CXF 3.0.0 и WSS4j 2.1.1. Чтобы избежать проблем с загрузчиком классов: Как я могу использовать Apache CXF 3.X и WSS4J 2.X из моего проекта уха, а не CXF и WSS4J (старее), которые установлены в модулях JBoss 6.3.0 EAP?


person luca.preikal    schedule 08.07.2015    source источник


Ответы (1)


Поскольку загрузка классов JBoss является модульной, вы можете создать jboss-deployment-structure.xml и исключить модули, связанные с CXF и WSS4J, в файле ear. Для справки см. эту вики-страницу. Вы можете найти имена отдельных модулей в папке модулей module.xml файла.

Например, чтобы исключить модуль CXF-сервера:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
      <deployment>
        <exclusions>
          <module name="org.jboss.ws.cxf.jbossws-cxf-server"/>
        </exclusions>
      </deployment>
</jboss-deployment-structure>

Очевидно, вам нужно будет убедиться, что ваш pom.xml извлекает нужные артефакты для ваших версий CXF и WSS4J и не установлен в предоставленную область. В качестве альтернативы вы можете создать свою собственную папку пользовательского модуля JBoss и добавить туда библиотеки, если они будут совместно использоваться более чем одним приложением (помогает уменьшить размер ваших файлов EAR и WAR и централизованно управлять зависимостями в организации в контейнере). В этом случае вы можете установить его в предоставленную область.

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

person CoolBeans    schedule 09.07.2015