【问题标题】:How to stop Wildfly11 loading jar dependency webservices如何停止Wildfly11加载jar依赖webservices
【发布时间】:2018-05-10 08:26:24
【问题描述】:

我需要一些帮助来防止 Wildfly11 在 jar 依赖项中自动加载带有 @WebServiceProvider 注释的类。

依赖项是第 3 方,因此我无法更改 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>

这完全禁用了 web 服务支持,目前还可以(尽管我确实遇到了其他似乎不会破坏任何东西的错误)......但理想情况下,我只想排除 jar 或某些类/类路径正在自动加载。

到目前为止我发现的是,@WebServiceProvider 注释不是 bean 扫描的一部分。所以将bean-discovery-mode="none" 添加到beans.xml 没有影响。添加jboss-scanning.xml 没有运气,除了 jar 或类..

申请详情:

  • 类型: SpringBoot 2 战争文件
  • Container:以独立模式部署到 Wildfly 11 的 War
  • 为什么选择 Wildfly?! 客户口述。
  • 排除 jar? 我不想从类路径中排除整个 jar,我需要一些类。我只是不想让 automagic 加载我没有要求的东西。

更新 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> {

【问题讨论】:

    标签: java spring jakarta-ee wildfly wildfly-11


    【解决方案1】:

    一种排除自动加载某些依赖项的方法,我没有尝试过,但可能对你有帮助

    我的 jboss-deployment-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>
    

    【讨论】:

    • 嗨,我应该如何根据我的用例调整它?似乎您排除了纠察链接库,而不是自定义类?我拥有的 maven 依赖项在 allfusion:genrt:80 上,导致问题的类是 com.ca.gen80.wsrt.router.GenServiceRouter。我尝试将您示例中的排除路径更改为com/ca/gen80/wsrt/**。不走运...不太确定这是在配置什么...
    • @trojanc,希望您解决了这个问题。我现在正面临这个问题。您能否分享您在解决此问题方面的知识
    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2017-06-18
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多