如何动态生成Web服务客户端

joj*_*ojo 2 java client web-services dynamic

我遇到了问题.

假设另一方面,WSDL将始终改变,

例如,在WSDL文件中描述的其他Web服务只有方法,但方法的名称可能总是改变,今天调用methodABC(),明天将更改为methodDEFO()..

假设在JAVA中,无论如何,我可以动态生成Web服务客户端,而无需手动手动执行??? 我的意思是当我的应用程序仍在运行时动态生成客户端..

或者我应该去看什么样的文章,因为我从互联网上做了很多搜索,找不到办法去做..我想我可能需要创建自己的框架来处理它..但是不要不知道从哪里开始.

gus*_*afc 7

您可以将任何WSDL-to-Java工具与Java Compiler API结合使用,使用URLClassLoader加载生成的类,然后开始使用.我会说,相当多的工作,但不是很难.(不过,你最终可能会耗尽permgen空间.)

但是,如果您的场景是现实,最重要的问题不是如何生成类,但为什么Web服务的发布者会破解?

编辑:澄清"破解"的事情.更改Web服务的接口(例如,方法名称)意味着您必须猜测要调用哪种方法.如果界面中只有一种方法,那么确定要调用哪种方法并不难,但仍然 - 如果突然出现两种方法会发生什么?

更改外部系统使用的服务的界面是一件非常重要的事情,不应掉以轻心.它绝对应该是自动化的.这是一种代码味道,很可能是无能,药物滥用和/或纯粹疯狂的表现.

我意识到我这样的道德化并没有解决你的问题.我只希望你可以和负责人讨论一下,不断改变界面的网络服务是否令人厌恶,而且改变这一点会比改变你的代码更好.