1

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

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

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

createCall()

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

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

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

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

感谢您提供信息甚至指向现有文档的指针。

4

1 回答 1

0

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

在不知道轴详细信息的情况下 - 是否可以将 Stub 子类化并覆盖“createCall”?Axis 不会触及这个子类,您可以在覆盖的 createCall 方法中设置属性

于 2010-01-23T22:02:35.323 回答