转换WSDL文件格式(Java?)

3
我使用的系统(Salesforce)只能使用文档/字面含义包装的WSDL文件。然而,我的客户需要我连接旧的系统,这些系统生成其他格式的WSDL文件(例如RPC literal或仅为doc literal)。所以我经常收到不友好的格式的wsdl文件,我必须花费很多时间试图将其塞进Salesforce可以接受的格式中。基本上,在wsdl中不能有任何外部引用,它必须是文档/字面含义包装的。
那么...我在想解决这个问题的一个巧妙方法可能是在Java(jax.ws)中使用wsdl,然后通过单个调用动态地从Java重新创建wsdl。
这个问题之前解决过吗?如果没有,那么我走的方向对吗?有人之前解决过这个wsdl转换问题吗?我认为XSLT可能可以胜任这项工作,但对于像我这样的人来说,我必须学习有关WSDL的最少知识,以解决此问题。
简而言之,我能否使用Java消耗/创建任意格式的WSDL,以便我可以创建没有属性(而是元素)和无导入(完全自包含的WSDL应该是输出)的包装文档/字面含义格式的WSDL。
如果您可以帮助我解决这个问题,我会为您买披萨!没错。我会通过电子邮件向您发送papaJohn/Dominos/Pizzahut的优惠券(如果您愿意告诉我您的家庭地址/电话号码,甚至可以致电您当地的披萨店为您购买披萨 - 但您可能不想这么做)。

你认为为什么同样的on-the-wire格式可以等效地表示为doc/lit和rpc/lit? - bmargulies
我不确定我理解了你的问题。我的假设是SOAP就是SOAP,但对于任何给定的应用程序,有多种定义可接受通信协议的方式。我认为这些多种方式是不同的WSDL格式,我应该能够在它们之间进行转换。我错了吗? - alan brown
我再次仔细阅读了你的评论!你是在说他们不能吗?你是对的。我本来以为他们可以。难道我错了吗? - alan brown
我的直觉是,并不一定存在一个等效的doc/literal WSDL,可以描述任意rpc/literal所描述的相同的传输协议。但我并不十分自信,想知道你对此了解多少。 - bmargulies
嗯,我不确定RPC。但我知道许多基于属性、引用外部文件的WSDL可以转换为自包含的包装文档字面量,因为我们在许多情况下被迫手动完成这个过程。我希望通过自动化这个过程成为一个英雄。我很惊讶网上没有任何自动转换器,并认为JAX.ws包可能是我在这个努力中的朋友。 - alan brown
听起来你可以编写一个适配器 Web 应用程序,坐在 Salesforce 和第三方服务之间。Web 应用程序将接受以您创建的文档包装格式 / WSDL 的调用,然后以第三方格式调用。但也许这已经是你正在做的事情了? - davidfrancis
1个回答

1

我可以提出一种方法,但您可能会发现它有用,也可能不会。

Apache CXF 包括大量的代码,用于基于 WSDL 构建服务模型,另一方面基于模型构建 WSDL。您可以从该代码开始,并尝试编写更多代码以映射模型,从而获得所需的 WSDL。

我相当自信 JAX-WS 中没有内置帮助解决这个问题,但我肯定没记住所有细节。您还可以在 CXF 用户邮件列表中找到更深入的相关专业知识。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接