Получение "альтернатив политики не может быть удовлетворено" с точки зрения cxf - PullRequest
0 голосов
/ 27 сентября 2019

Я создал веб-сервис с cxf и верблюдом из wsdl.Ниже приведены мои конфиги bean-компонентов:

@Bean
open fun cxfServlet(): ServletRegistrationBean<CXFServlet> {
    val servlet = ServletRegistrationBean(CXFServlet(), "/ws/*")
    servlet.setLoadOnStartup(1)
    servlet.setName("cxfServlet")
    return servlet
}

@Bean
open fun cxf(): Bus {
    return BusFactory.newInstance().createBus()
}

@Bean("endpoint")
open fun endpoint(bus: Bus): CxfEndpoint {
    val endpoint = CxfEndpoint()
    endpoint.address = "/endpoint"
    endpoint.serviceClass = IWebService::class.java
    endpoint.wsdlURL = "wsdl/mywsdl.wsdl"
    endpoint.dataFormat = DataFormat.POJO
    endpoint.bindingId = SOAPBinding.SOAP11HTTP_BINDING
    endpoint.isLoggingFeatureEnabled = true
    endpoint.loggingSizeLimit = -1
    return endpoint
}

Это работало нормально до того момента, как я использовал WSDl с блоком "Policy":

<wsp:Policy wsu:Id="id">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:TransportToken>
                        <wsp:Policy>
                            <sp:HttpsToken RequireClientCertificate="false"/>
                        </wsp:Policy>
                    </sp:TransportToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256/>
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict/>
                        </wsp:Policy>
                    </sp:Layout>
                </wsp:Policy>
            </sp:TransportBinding>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

И теперь приложение работает правильно, но когда я отправляюпоявляется сообщение об исключении:

org.apache.cxf.ws.policy.PolicyException: эти альтернативы политики не могут быть выполнены:{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}TransportToken
{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}HttpsToken
{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}AlgorithmSuite
{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}Basic256
{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}Layout
{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}Strict

Но если я создаю сервер в soapUI, он работает нормально.Я попробовал несколько советов о создании перехватчиков и других из stackoverflow, но ничего не изменилось.Как я могу решить проблему?

...