代码之家  ›  专栏  ›  技术社区  ›  marc esher

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

  •  1
  • marc esher  · 技术社区  · 14 年前

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

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

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

    createCall()
    

    创建call对象并设置一些属性。目前,我在这里修改生成的源代码;然后,存根包含:

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

    因此,我看不出有什么方法可以使用ServiceLocator获取存根,修改要修改的属性,然后使用存根调用要调用的方法,假设存根方法调用createCall()然后调用invoke。在调用新的call对象之前,似乎没有办法截获它。

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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Andreas Dolk    14 年前

    我也不想接触生成的代码。风险是,我曾经不得不重新生成它,并松开我的编辑。

    如果不知道axis的详细信息-难道不能对存根进行子类化并重写“createcall”吗?axis不会触及这个子类,您可以在重写的createcall方法中设置属性。