Spring WS: добавление настраиваемого заголовка SOAP в запрос wsdl - PullRequest
0 голосов
/ 28 января 2019

Какова моя цель?

Я пытаюсь раскрыть сервис мыла, используя 'UWLR_Leerlinggegevens_v2p2.xsd', и он включает в себя и другие xsds также: ниже выставлен WSDL, отсутствует мыло: заголовок в ws: input, следовательно, при импорте wsdlв SOAP UI Часть заголовка не приходит

<wsdl:operation name="leerkrachten">
    <soap:operation soapAction="" />
    <wsdl:input name="leerkrachten_verzoek">
        <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output name="leerkrachten_antwoord">
        <soap:body use="literal" />
    </wsdl:output>
</wsdl:operation>

Мне нужно решение, как добавить часть заголовка в

В чем проблема?

Вот мой код:

    @EnableWs
    @Configuration
    @ComponentScan(basePackageClasses = { WebServiceConfig.class })
    public class WebServiceConfig extends WsConfigurerAdapter {


    private static final String[] WS_URL_MAPPINGS = { "*.wsdl", "*.xsd"};
        @Bean
        public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
            MessageDispatcherServlet servlet = new MessageDispatcherServlet();
            servlet.setApplicationContext(applicationContext);
            servlet.setTransformWsdlLocations(true);

            return new ServletRegistrationBean(servlet, WS_URL_MAPPINGS);
        }

        @Bean(name = "leerlinggegevens")
        public DefaultWsdl11Definition defaultWsdl11Definition() {
            DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
            wsdl11Definition.setPortTypeName("leerlinggegevensPort");
            wsdl11Definition.setLocationUri("/ws");
            wsdl11Definition.setTargetNamespace("http://www.edustandaard.nl/leerresultaten/2/leerlinggegevens/");
            wsdl11Definition.setSchemaCollection(xsdSchemaCollection());
            wsdl11Definition.setRequestSuffix("_verzoek");
            wsdl11Definition.setResponseSuffix("_antwoord");
            wsdl11Definition.setFaultSuffix(":Fault");
            return wsdl11Definition;
        }


        @Bean
        public CommonsXsdSchemaCollection xsdSchemaCollection() {
            CommonsXsdSchemaCollection xsds = new CommonsXsdSchemaCollection(new Resource[] {
                    new ClassPathResource("Schemas/UWLR_Autorisatie_v2p2.xsd"),
                    new ClassPathResource("Schemas/SOAP_Envelope.xsd"),
                    new ClassPathResource("Schemas/EDEXML.types.vast.xsd"),
                    new ClassPathResource("Schemas/EDEXML.types.variabel.xsd"),
                    new ClassPathResource("Schemas/EDEXML.elementen.xsd"),
                    new ClassPathResource("Schemas/UWLR_Leerlinggegevens_v2p2.xsd")});
            xsds.setInline(true);
            return xsds;    
        }
    }

также пытался с SimpleWsdl11Definition выставить прямой wsdl вместо использования xsd

@Bean(name = "leerlinggegevens")
    public Wsdl11Definition defaultWsdl11Definition() {
        SimpleWsdl11Definition wsdl11Definition = new SimpleWsdl11Definition();
        wsdl11Definition.setWsdl(new ClassPathResource("wsdl/UWLR_Leerlinggegevens_v2p2.wsdl"));

        return wsdl11Definition;
    }

, но столкнулся с проблемой при импорте в SOAP UI, поскольку оригинальный wsdl ссылался на другие xsds, как показано ниже

<wsdl:types>
<xs:schema>
<xs:import schemaLocation="../Schemas/UWLR_Leerlinggegevens_v2p2.xsd" namespace="http://www.edustandaard.nl/leerresultaten/2/leerlinggegevens"/>
<xs:import schemaLocation="../Schemas/UWLR_Autorisatie_v2p2.xsd" namespace="http://www.edustandaard.nl/leerresultaten/2/autorisatie"/>
</xs:schema>
</wsdl:types>

с использованием SimpleWsdl11Definition Я не знаю, как добавить другие xsds

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...