将 hybrid/web 客户端应用程序与一组 WSDL 描述的现有远程 Web 服务连接起来
Interfacing a hybrid/web client application with existing remote web services described by a set of WSDL
问题简述
我必须集成一个可能基于 Ionic 的移动混合应用程序,并且必须(间接)使用大量 SOAP Web 服务。我希望移动应用程序 Typescript 客户端能够识别由 XSD 定义的 bean 和描述 Web 服务的 WSDL 文件。
一些补充说明
在下面的解释中,我将在解决方案中引用以下对象:
- 移动应用 Typescript 客户端 [A]
- 移动专用服务器端 Java 应用程序 [B]
- 公开业务功能的远程 SOAP Web 服务 [C]
以下约束生效:
- 移动应用程序客户端 [A] 将通过 REST 调用与
专用服务器端应用程序 [B]
- 专用服务器端应用程序 [B] 将在 Java 中开发
专用服务器端应用程序 [B] 将负责使用现有的 Web 服务 [C],因此充当 Typescript 应用程序客户端 [A] 和 SOAP Web 服务 [C]
之间的集成层
- SOAP Web 服务 [C] 由许多 WSDL 文件描述,由一些 XSD 文件支持,后端团队不愿意将他们的文档重写为 WSDL 和 XSD
假设 Web 服务 [C] 使用的一些请求和响应涉及以下 Java 对象
public class MyElement {
private ElementColor color;
}
其中 ElementColor 是一个 Java 枚举,例如
public enum ElementColor {
RED,
GREEN,
BLUE,
}
这些 Java 对象在 WSDL 和 XSD 文件中定义,因此我们可以构建一个 JAR 文件,将其导入服务器端应用程序 [B],因此我们的服务器-端应用程序 [B] 将知道 "color" 属性 可以在 MyElement class 中采用的可能值。一切顺利。
我的问题是 Typescript 移动客户端 [A] 不导入 JAR 文件(很明显),因此当客户端开发人员必须编写请求或解析涉及 MyElement 对象的响应时,他将或者
- 将 "color" 字段视为字符串(但他可以向其写入任何值,而不仅仅是有效的 "RED"、"GREEN" 和 "BLUE" 值)
- 定义模仿 ElementColor Java 枚举的 Typescript 枚举。
第二个选项更清晰,但仍未与 WSDL 和 XSD 文件中定义的实际模型紧密相关,即客户端开发人员仍可以在他的文件中添加 "YELLOW" 值打字稿枚举并将其发送到后端。
我想在我的 Typescript 代码库中自动 import/inherit 由 WSDL 和 XSD 文件定义的模型,或 Java classes 从那些相同的 WSDL 和 XSD 文件生成。 请注意,在运行时检索这些对象是不够的(我可以编写一个转储它们的服务),因为客户端开发者在开发时仍然看不到它们。
预先感谢您的帮助。
到目前为止,我发现解决此问题的最佳方法是利用类似 typescript generator plugin 的方法,它将 Java 类 转换为 Typescript 类.
为了将 WSDL 和 XSD 文件转换为 Java 代码,我已经使用 cxf codegen 插件安装了 Maven pom,我只需要将 typescript 生成器插件执行添加到流程中, 这样 Java 个文件依次转换为 Typescript 文件。然后我可以在我的混合应用程序项目中导入 Typescript 定义文件。
问题简述
我必须集成一个可能基于 Ionic 的移动混合应用程序,并且必须(间接)使用大量 SOAP Web 服务。我希望移动应用程序 Typescript 客户端能够识别由 XSD 定义的 bean 和描述 Web 服务的 WSDL 文件。
一些补充说明
在下面的解释中,我将在解决方案中引用以下对象:
- 移动应用 Typescript 客户端 [A]
- 移动专用服务器端 Java 应用程序 [B]
- 公开业务功能的远程 SOAP Web 服务 [C]
以下约束生效:
- 移动应用程序客户端 [A] 将通过 REST 调用与 专用服务器端应用程序 [B]
- 专用服务器端应用程序 [B] 将在 Java 中开发 专用服务器端应用程序 [B] 将负责使用现有的 Web 服务 [C],因此充当 Typescript 应用程序客户端 [A] 和 SOAP Web 服务 [C] 之间的集成层
- SOAP Web 服务 [C] 由许多 WSDL 文件描述,由一些 XSD 文件支持,后端团队不愿意将他们的文档重写为 WSDL 和 XSD
假设 Web 服务 [C] 使用的一些请求和响应涉及以下 Java 对象
public class MyElement {
private ElementColor color;
}
其中 ElementColor 是一个 Java 枚举,例如
public enum ElementColor {
RED,
GREEN,
BLUE,
}
这些 Java 对象在 WSDL 和 XSD 文件中定义,因此我们可以构建一个 JAR 文件,将其导入服务器端应用程序 [B],因此我们的服务器-端应用程序 [B] 将知道 "color" 属性 可以在 MyElement class 中采用的可能值。一切顺利。
我的问题是 Typescript 移动客户端 [A] 不导入 JAR 文件(很明显),因此当客户端开发人员必须编写请求或解析涉及 MyElement 对象的响应时,他将或者
- 将 "color" 字段视为字符串(但他可以向其写入任何值,而不仅仅是有效的 "RED"、"GREEN" 和 "BLUE" 值)
- 定义模仿 ElementColor Java 枚举的 Typescript 枚举。
第二个选项更清晰,但仍未与 WSDL 和 XSD 文件中定义的实际模型紧密相关,即客户端开发人员仍可以在他的文件中添加 "YELLOW" 值打字稿枚举并将其发送到后端。
我想在我的 Typescript 代码库中自动 import/inherit 由 WSDL 和 XSD 文件定义的模型,或 Java classes 从那些相同的 WSDL 和 XSD 文件生成。 请注意,在运行时检索这些对象是不够的(我可以编写一个转储它们的服务),因为客户端开发者在开发时仍然看不到它们。
预先感谢您的帮助。
到目前为止,我发现解决此问题的最佳方法是利用类似 typescript generator plugin 的方法,它将 Java 类 转换为 Typescript 类.
为了将 WSDL 和 XSD 文件转换为 Java 代码,我已经使用 cxf codegen 插件安装了 Maven pom,我只需要将 typescript 生成器插件执行添加到流程中, 这样 Java 个文件依次转换为 Typescript 文件。然后我可以在我的混合应用程序项目中导入 Typescript 定义文件。