gpt4 book ai didi

soap - Spring WS 去除灵活 URL、限制 WSDL URL 和服务 URL

转载 作者:行者123 更新时间:2023-12-04 03:12:15 25 4
gpt4 key购买 nike

我正在尝试制作一个 Spring Boot Soap WebService 应用程序,并按照入门 ( https://spring.io/guides/gs/producing-web-service/ ) 示例学习如何执行此操作。

我已经创建了我想要的东西,但是这个设置有两个 URL 问题,我找不到我应该更改什么配置来解决这个问题:

  • WSDL URL 基本是 localhost:8080/ws/countries.wsdl 但类似 localhost:8080/ws/whatever/countries.wsdl 是正确的
  • SoapUI 请求的服务 URL 是 localhost:8080/ws 但类似 localhost:8080/ws/whatever 是正确的

  • 我知道这是 Spring WS 的一个功能,但我想要一个固定的 URL(在两种情况下都没有“任何”)并且找不到要为此更改的内容

    最佳答案

    没有直接的方法来限制你想要的方式。

  • SOAP 服务不是基于 URL 的。
  • SOAP 消息体描述端点。

  • The thing you wanted is possible following way.



    更改 ServletRegistrationBean 中的 URL 映射限制 URL 访问
  • 现有 /ws/*映射是所有/ws/whatever的原因url 成功响应。
  • 更改为 new ServletRegistrationBean(servlet, "/ws");
  • 效果将是您不能要求除 /ws 以外的其他要求网址
  • 现在问题也就是说,您无法通过此映射获得 WSDL。

  • 获取WSDL的解决方案
  • DefaultWsdl11Definition实际上是针对每个请求从 XSD 生成 WSDL。
  • 保存 countries.wsdlresource文件夹作为静态 WSDL 文件。
  • 删除 DefaultWsdl11Definition bean 角,扁 bean 。
  • 新建SimpleWsdl11Definition bean 一样
    @Bean(name = "countries")
    public SimpleWsdl11Definition orders() {
    SimpleWsdl11Definition wsdl11Definition = new SimpleWsdl11Definition();
    wsdl11Definition.setWsdl(new ClassPathResource("countries.wsdl"));
    return wsdl11Definition;
    }
  • 现在在 ServletRegistrationBean 中添加另一个静态 URL 映射.因为它最终看起来像 new ServletRegistrationBean(servlet, "/ws", "/ws/countries.wsdl");
  • 这种做法适用于开发阶段,因为您可以轻松发布更改后的定义。但建议使用static-wsdl用于生产环境。详情** here
  • 关于soap - Spring WS 去除灵活 URL、限制 WSDL URL 和服务 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44109953/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com