Spring-ws 自动生成wsdl 修改请求默认Request后缀的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-ws 自动生成wsdl 修改请求默认Request后缀的问题相关的知识,希望对你有一定的参考价值。

参考技术A Spring关于webservice的框架

可以实现配置化自动生成wsdl文件与基于注解的自动序列化和反序列化

出现的问题:

1、想利用自动生成正确的wsdl文件

满足条件:默认的请求与响应的结尾Request与Response

Spring一贯的约定大于配置,约定的soap请求报文需要以Request结尾,soap响应报文需要以Response结尾,这是在给的spring-ws中硬编码实现的

如果想生成自定义的soap报文格式需要重写覆盖spring-ws的默认配置 DefaultWsdl11Definition

同时重写SuffixBasedMessagesProvider与SuffixBasedPortTypesProvider,关于后缀的问题

配置类

@EnableWs

@Configuration

public class WebServiceConfig

        @Bean(name ="Invoke")

        public Wsdl11Definition defaultWsdl11Definition(XsdSchema srmSchema)

                //未解决默认请求后缀为Request才能正确生成wsdl文件的问题,

                // 重写WSDL生成的实现类,覆盖默认的DefaultWsdl11Definition

                //总体在于xml关键标签元素的渲染判断

                MyWsdl11Definition definition =new MyWsdl11Definition();

                definition.setPortTypeName("InvokePort");

                definition.setTargetNamespace(Constant.NAMESPACE_BOI);

                definition.setLocationUri("/ws");

                definition.setSchema(srmSchema);

                definition.setRequestSuffix("");//后缀修改,可以为空,而不是默认的Request

                return definition;

        



2. 访问spring-ws的wsdl,默认url.wsdl而不是习惯用的url?wsdl

当然需要修改也可以实现

从 wsdl 生成 html 表单

【中文标题】从 wsdl 生成 html 表单【英文标题】:Generate html form from wsdl 【发布时间】:2016-08-20 00:55:18 【问题描述】:

我需要一种方法来生成 HTML 界面(表单),从 wsdl 开始,提交 Web 服务请求。请求提交是由服务器端代码进行的。用户填写表单并发布数据。

我正在寻找可以帮助我编写代码的库 (Java)。

我不是要创建 web 服务的 java 类,我必须为任何 wsdl url 生成表单字段。

【问题讨论】:

【参考方案1】:

根据 MikeC 的说法,http://www.soapclient.com/soaptest.html 是一个从 WSDL 文档创建 HTML 表单的工具。不幸的是,它不是一个 Java 库,而且它也至少有一个限制:不支持多维数组。

但只要稍加努力,您就应该能够为您的特定用例编写自己的解析器/转换器。另请参阅 How to parse WSDL in Java? 以了解有关 JAVA 的 WSDL 解析器的更多信息。

也可以是 XSLT http://www.ibm.com/developerworks/library/ws-xsltwsdl/。

【讨论】:

你的意思是你想构建一个简单的soapUI之类的东西吗?即,用户加载 WSDL 并显示网页以将请求消息的各种元素作为输入。用户填写值并单击按钮以向服务提交请求,响应元素将显示在网页中。那是你想要建造的吗?有点像soapclient.com/soaptest.html

以上是关于Spring-ws 自动生成wsdl 修改请求默认Request后缀的问题的主要内容,如果未能解决你的问题,请参考以下文章

来自 WSDL 的 Spring-ws 客户端

Spring-WS:具有 WSDL 多节点分类的 SimpleWsdl11Definition

SPRING-WS CLIENT 端 WSDL 试用

CXF通过拦截器修改请求报文

如何更改Spring-WS的“SOAP-ENV”默认前缀

wcf服务元数据WSDL中的地址为请求方地址不再是主机名