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

ApacheAxis:如何使用从wsdl2java生成的代码设置调用属性?,java,web-services,axis,wsdl2java,Java,Web Services,Axis,Wsdl2java,我正在使用ApacheAxis1.4(是的,旧版本)和wsdl2java为Web服务生成客户机代码。在对生成的存根调用方法之前,我想在Call对象上设置其他属性 例如,我想设置用户名、密码,可能添加或修改现有的头,并更改客户端处理程序以使用不同的实现 目前,我正在通过修改生成的存根类并调用适当的setter来实现这一点。但是,我希望在不接触生成的文件的情况下实现这一点。但是我很困惑,因为存根类有: createCall() 它创建调用对象并设置一些属性。当前,我正在修改生成的源代码;然后,存根

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

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

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

createCall()
它创建调用对象并设置一些属性。当前,我正在修改生成的源代码;然后,存根包含:

clientMethod1(){
    blahblah
    Call _call = createCall();
    ......
    _call.invoke();
}
因此,鉴于存根方法调用createCall()然后调用invoke,我看不到一种方法可以使用serviceLocator获取存根,修改我要修改的属性,然后使用存根调用我要调用的方法。似乎没有一种方法可以在调用新的调用对象之前拦截它

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


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

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


在不了解axis详细信息的情况下-难道不可能对存根进行子类化并重写“createCall”吗?axis不会触及此子类,您可以在重写的createCall方法中设置属性ator locator=new ServiceLocator(…);myObj=locator.getMyObj();((存根)myObj.setUsername(…);等等。这是首选方法吗?Andreas,好主意。我可以按照你的建议做。然而,我认为一个缺点是,我必须直接实例化存根,这是“不赞成的”“在轴线上。通常,您从“ServiceLocator”获取存根。它执行一些hocum,然后返回存根。不过,我一直想知道servicelocator提供了多少价值。也许是时候探索一下了,并且可能只是实例化一个子类,正如您所建议的那样。