1

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

我知道它实际上并不遵循 REST 哲学,尽管请允许我称它为 REST 服务。此 REST 服务将部署在 Tomcat 上,并且许多客户端将同时访问它。

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

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

请让我知道是否存在任何更好的解决方案。我们不希望数据库存储对象。

4

1 回答 1

0

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

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

于 2012-07-05T22:05:22.337 回答