在现有SOAP Web服务上构建REST包装器

我的团队正在基于现有的基于SOAP的Web服务开发REST服务包装器。 我们并不完全了解SOAP服务内部,只能访问WSDL文件。 我们的REST服务包装器将只是一对一的映射。

我知道它实际上不遵守REST哲学,即使请允许我称之为REST服务。 此REST服务将部署在Tomcat上,许多客户端将同时访问它。

当前的实现是,对于每个客户端,我们将创建一个代理对象(使用SOAP WSDL代理类)。 此代理对象将用于调用SOAP API。 SOAP要求在代理对象上绑定身份validation详细信息,因此我们在运行时为内存中的每个客户端保存这些对象,同时进行第一次REST调用以建立会话。

使用SessionID标识符在运行时获取保存的对象。 现在的问题是这些代理对象占用了大量内存块,只支持少量REST客户端。 (默认64 MB,只能运行19个REST客户端)。 这是我们现在想要改变方法的麻烦,需要你的建议。

如果有更好的解决方案,请告诉我。 我们不希望DB存储对象。

如果您只能调用HTTP / Soap服务并且无法访问代码,那么您可以使用适当的REST约定创建REST服务,然后实现对SOAP服务调用的转换。您可以自动创建SOAP客户端类来自WSDL,这将为您节省一些时间。

但是您需要编写自定义转换层,而不是制作一组hacky REST服务并尝试将其纳入SOAP模型。 尽量保持真实rest并使翻译层更加复杂……这将是值得的。