Apache Axis:如何使用wsdl2java生成的代码设置调用属性?

时间:2010-01-23 20:28:59

标签: java web-services axis wsdl2java

我正在使用Apache Axis 1.4(是的,旧的),使用wsdl2java为Web服务生成客户端代码。在调用生成的存根上的方法之前,我想在Call对象上设置其他属性。

例如,我想设置用户名,密码,可能添加或修改现有标头,并更改客户端处理程序以使用不同的实现。

目前,我这样做是通过修改生成的Stub类并调用适当的setter来实现的。但是,我想在不触及生成的文件的情况下实现此目的。我很困惑,因为Stub类有:

createCall()

创建调用对象并设置一些属性。目前,这是我正在修改生成的源代码的地方;然后,Stub包含:

clientMethod1(){
    blahblah
    Call _call = createCall();
    ......
    _call.invoke();
}

所以我看不到一种方法可以使用serviceLocator来获取存根,修改我想要修改的属性,然后使用存根调用我想要调用的方法,因为存根方法调用createCall()然后调用invoke。似乎没有办法在调用新的Call对象之前拦截它。

那么:如何在不修改生成的Stub类源代码的情况下修改调用中的属性?

感谢您提供有关现有文档的信息或指示。

1 个答案:

答案 0 :(得分:0)

我也不想触摸生成的代码。风险在于我曾经不得不重新生成它并放弃我的编辑。

不知道轴细节 - 是不是可以继承Stub并覆盖'createCall'? Axis不会触及此子类,您可以在重写的createCall方法

中设置属性