1

Wildfly11@WebServiceProviderが jar 依存関係で注釈が付けられたクラスを自動的にロードするのを防ぐ助けが必要です。

依存関係はサードパーティであるため、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ても影響はありません。jarまたはクラスを除いて、追加はjboss-scanning.xml運がありませんでした..

アプリケーションの詳細:

  • タイプ: SpringBoot 2 war ファイル
  • コンテナー:スタンドアロン モードで Wildfly 11 にデプロイされた戦争
  • なぜワイルドフライ?! クライアントが指示した。
  • 瓶を除外しますか?jar 全体をクラスパスから除外したくありません。必要なクラスがあります。求めていないものをオートマジックにロードさせたくないだけです。

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

1 に答える 1