Для службы Soap, реализованной с использованием cxf, я помещаю jar-файлы, связанные с cxf, в папку webapp/WEB-INF/lib
. Список папок lib выглядит следующим образом:
cxf-core-3.1.12.jar
cxf-rt-databinding-jaxb-3.1.12.jar
cxf-rt-frontend-simple-3.1.12.jar
cxf-rt-ws-addr-3.1.12.jar
neethi-3.0.3.jar
cxf-rt-bindings-soap-3.1.12.jar
cxf-rt-frontend-jaxrs-3.1.12.jar
cxf-rt-rs-client-3.1.12.jar
cxf-rt-ws-policy-3.1.12.jar
wsdl4j-1.6.3.jar
cxf-rt-bindings-xml-3.1.12.jar
cxf-rt-frontend-jaxws-3.1.12.jar
cxf-rt-transports-http-3.1.12.jar
cxf-rt-wsdl-3.1.12.jar
xmlschema-core-2.2.2.jar
Я использую Tomcat и поместил все эти банки в папку app/lib
geronimo-activation_1.1_spec-1.0.2.jar
geronimo-javamail_1.4_spec-1.6.jar
geronimo-servlet_3.0_spec-1.0.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
в папке lib, на которую ссылается tomcat common.loader в catalina.properties.
Я действительно хотел поместить все jx-файлы cxf вместе с jar-файлами geronimo в app / lib, чтобы в дальнейшем, когда у нас было больше мыльных сервисов, каждое веб-приложение не копировало все jx-файлы cxf в своей папке webapp. Во время тестирования я обнаружил, что если я помещаю все jar-файлы cxf в app / lib, он не работает с разными ошибками.
Некоторые ошибки связаны с тем, что более старая версия нет в папке app / lib,
Более старые версии jar-файлов xmlschema уже представлены в app / lib, также как и более старая версия jar-файла wsdl4j. Возможно, я не смогу обновить версии neethi 2.x до 3.x, как требуется в данный момент.
У меня вопрос: если я помещаю только jar-файлы, относящиеся к cxf, в app / lib и сохраняю jar-файлы neethi, xmlschema, wsdl4j в папке webapp, я получаю исключение, подобное
Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.
Я не очень понимаю, почему это не работает. Я думал, что загрузчик webappclass загрузит neethi и 2 другие jar-файлы из папки webapp, поэтому он должен был работать. Любое предложение, почему оно не работает, и любые альтернативы, которые я могу попробовать.
Я пробовал разные комбинации и нашел, что все эти банки работают вместе:
cxf-core-3.1.12.jar
cxf-rt-databinding-jaxb-3.1.12.jar
cxf-rt-frontend-simple-3.1.12.jar
cxf-rt-ws-addr-3.1.12.jar
neethi-3.0.3.jar
cxf-rt-bindings-soap-3.1.12.jar
cxf-rt-frontend-jaxrs-3.1.12.jar
cxf-rt-rs-client-3.1.12.jar
cxf-rt-ws-policy-3.1.12.jar
wsdl4j-1.6.3.jar
cxf-rt-bindings-xml-3.1.12.jar
cxf-rt-frontend-jaxws-3.1.12.jar
cxf-rt-transports-http-3.1.12.jar
cxf-rt-wsdl-3.1.12.jar
xmlschema-core-2.2.2.jar
org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl