我正在使用Apache Axis 1.4(是的,旧的),使用wsdl2java为Web服务生成客户端代码。在调用生成的存根上的方法之前,我想在Call对象上设置其他属性。
例如,我想设置用户名,密码,可能添加或修改现有标头,并更改客户端处理程序以使用不同的实现。
目前,我这样做是通过修改生成的Stub类并调用适当的setter来实现的。但是,我想在不触及生成的文件的情况下实现此目的。我很困惑,因为Stub类有:
createCall()
创建调用对象并设置一些属性。目前,这是我正在修改生成的源代码的地方;然后,Stub包含:
clientMethod1(){
blahblah
Call _call = createCall();
......
_call.invoke();
}
所以我看不到一种方法可以使用serviceLocator来获取存根,修改我想要修改的属性,然后使用存根调用我想要调用的方法,因为存根方法调用createCall()然后调用invoke。似乎没有办法在调用新的Call对象之前拦截它。
那么:如何在不修改生成的Stub类源代码的情况下修改调用中的属性?
感谢您提供有关现有文档的信息或指示。
答案 0 :(得分:0)
我也不想触摸生成的代码。风险在于我曾经不得不重新生成它并放弃我的编辑。
不知道轴细节 - 是不是可以继承Stub并覆盖'createCall'? Axis不会触及此子类,您可以在重写的createCall方法
中设置属性