Как остановить Wildfly11 загрузку jar зависимости веб-сервисов
Мне нужна помощь, предотвращающая автоматическую загрузку Wildfly11 классов, помеченных @WebServiceProvider
в банке зависимостей.
Зависимость является сторонней, поэтому я не могу изменить содержимое jar или внести изменения в исходный код.
я пытался
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclude-subsystems>
<subsystem name="jaxrs" />
<subsystem name="webservices" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
Это полностью отключенная поддержка веб-сервисов, что пока нормально (хотя я получаю другие ошибки, которые, похоже, ничего не нарушают)... но в идеале я просто хотел исключить jar или пути к определенным классам / классам из автоматической загрузки,
К настоящему времени я обнаружил, что @WebServiceProvider
аннотация не является частью сканирования bean-компонентов. Итак, добавление bean-discovery-mode="none"
в beans.xml
не имеет никакого влияния. Добавление jboss-scanning.xml
не повезло, исключая банку или классы..
Детали приложения:
- Тип: SpringBoot 2 war file
- Контейнер: Война развернута на Wildfly 11 в автономном режиме
- Почему Wildfly?! Клиент продиктован.
- Исключить банку? Я не хочу исключать всю банку из пути к классам, есть классы, которые мне нужны. Я просто не хочу, чтобы автоматик загружал вещи, которые я не просил.
Обновление 1 Вот запись в журнале. Да, она жалуется на WSDL... но я даже не хочу, чтобы этот класс вообще загружался.
11:56:50,990 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."studyquotation.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."studyquotation.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "studyquotation.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:172)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1955)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.jboss.wsf.spi.WSFException: JBWS024109: Could not get WSDL contract for endpoint com.ca.gen80.wsrt.router.GenServiceRouter at WEB-INF/wsdl/router.wsdl
at org.jboss.wsf.stack.cxf.metadata.MetadataBuilder.getWsdlLocationURL(MetadataBuilder.java:283)
at org.jboss.wsf.stack.cxf.metadata.MetadataBuilder.build(MetadataBuilder.java:90)
at org.jboss.wsf.stack.cxf.deployment.aspect.DescriptorDeploymentAspect.start(DescriptorDeploymentAspect.java:42)
at org.jboss.as.webservices.deployers.AspectDeploymentProcessor.deploy(AspectDeploymentProcessor.java:73)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:165)
... 5 more
Класс аннотируется
@WebServiceProvider(
serviceName = "router",
portName = "routerSoapPort",
targetNamespace = "http://GenStudio/router/",
wsdlLocation = "WEB-INF/wsdl/router.wsdl"
)
@BindingType("http://schemas.xmlsoap.org/wsdl/soap/http")
@ServiceMode(Mode.MESSAGE)
public class GenServiceRouter implements Provider<SOAPMessage> {
1 ответ
Один из способов исключить автоматическую загрузку некоторых зависимостей, я не пробовал, но может быть, это поможет вам
Содержимое моего jboss-deploy-structure.xml
<jboss-deployment-structure>
<deployment>
<!-- Add picketlink module dependency -->
<dependencies>
<module name="org.picketlink" annotations="true">
<imports>
<exclude path="org/picketlink/identity/federation/core/pdp/**"/>
</imports>
</module>
</dependencies>
</deployment>
</jboss-deployment-structure>