我正在使用 Apache Axis 1.4(是的,旧版本)和 wsdl2java 来生成 Web 服务的客户端代码。在调用生成的存根上的方法之前,我想在 Call 对象上设置其他属性。
例如,我想设置用户名、密码,可能添加或修改现有的标头,并更改客户端处理程序以使用不同的实现。
目前,我通过修改生成的 Stub 类并调用适当的 setter 来做到这一点。但是,我想在不接触生成的文件的情况下实现这一点。不过,我很困惑,因为 Stub 类有:
createCall()
它创建调用对象并设置一些属性。目前,这是我修改生成的源代码的地方;然后,存根包含:
clientMethod1(){
blahblah
Call _call = createCall();
......
_call.invoke();
}
所以我看不到可以使用 serviceLocator 获取存根,修改我要修改的属性,然后使用存根调用我要调用的方法的方法,因为存根方法调用 createCall()然后调用调用。似乎没有办法在调用新的 Call 对象之前拦截它。
那么:如何在不修改生成的 Stub 类的源代码的情况下修改调用中的属性?
感谢您提供信息甚至指向现有文档的指针。