Должны ли cxf-rt-frontend-jaxws-3.1.12.jar и neethi-3.0.3.jar присутствовать вместе в папке webapp? - PullRequest
1 голос
/ 10 июня 2019

Для службы 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
...