首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SimpleXsdSchema创建DefaultWsdl11Definition

使用SimpleXsdSchema创建DefaultWsdl11Definition
EN

Stack Overflow用户
提问于 2017-05-15 18:58:46
回答 1查看 1.3K关注 0票数 0

我正在使用Spring WS,并试图通过DefaultWsdl11Definition创建一个动态WSDL。基于Spring WS documentation,下面的代码应该可以工作:

代码语言:javascript
复制
@Bean
public DefaultWsdl11Definition orders() {
    DefaultWsdl11Definition definition = new DefaultWsdl11Definition();
    definition.setPortTypeName("Orders");
    definition.setLocationUri("http://localhost:8080/ordersService/");
    definition.setSchema(new SimpleXsdSchema(new ClassPathResource("echo.xsd")));

    return definition;
}

但是返回的WSDL不包括我的模式中定义的操作。日志中没有错误,返回的WSDL几乎为空,只有默认的WSDL生成。

可能会遗漏什么?

EN

回答 1

Stack Overflow用户

发布于 2017-05-15 18:58:46

通过查看Spring team的this tutorial,我终于知道出了什么问题。SimpleXsdSchema必须是bean。

代码语言:javascript
复制
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {

    @Bean
    public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(applicationContext);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean(servlet, "/ws/*");
    }

    @Bean(name = "countries")
    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) {
        DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
        wsdl11Definition.setPortTypeName("CountriesPort");
        wsdl11Definition.setLocationUri("/ws");
        wsdl11Definition.setTargetNamespace("http://spring.io/guides/gs-producing-web-service");
        wsdl11Definition.setSchema(countriesSchema);
        return wsdl11Definition;
    }

    @Bean
    public XsdSchema countriesSchema() {
        return new SimpleXsdSchema(new ClassPathResource("countries.xsd"));
    }
}

深入一步,我检查了SimpleXsdSchema是否实现了具有afterPropertiesSet()方法的InitializingBean接口。模式文件就是在该方法的实现中加载的。

所以Spring WS的文档是错误的。我希望在下一个版本中这个问题会得到解决。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43977739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档