Apache Axis: Как установить свойства вызова, используя код, сгенерированный из wsdl2java? - PullRequest
1 голос
/ 23 января 2010

Я использую Apache Axis 1.4 (да, старый) с wsdl2java для генерации клиентского кода для веб-сервиса. Я хотел бы установить дополнительные свойства для объекта Call перед вызовом методов для сгенерированной заглушки.

Например, я хотел бы установить имя пользователя, пароль, возможно добавить или изменить существующие заголовки и изменить обработчики клиента для использования различных реализаций.

В настоящее время я делаю это, изменяя сгенерированный класс Stub и вызывая соответствующие установщики. Однако я бы хотел достичь этого, не касаясь сгенерированных файлов. Я в замешательстве, потому что класс Stub имеет:

createCall()

, который создает объект вызова и устанавливает некоторые свойства. В настоящее время именно здесь я модифицирую сгенерированный исходный код; затем заглушка содержит:

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

Так что я не вижу способа, которым я могу использовать serviceLocator, чтобы получить заглушку, изменить свойства, которые я хочу изменить, а затем использовать заглушку для вызова методов, которые я хочу вызвать, учитывая, что методы заглушки createCall (), а затем вызвать invoke. Похоже, нет способа перехватить новый объект Call до того, как он будет вызван.

Итак: Как изменить свойства в вызове, не изменяя исходный код сгенерированного класса Stub?

Спасибо за информацию или даже ссылки на существующую документацию.

1 Ответ

0 голосов
/ 24 января 2010

Я бы тоже не хотел трогать сгенерированный код. Риск состоит в том, что мне однажды придется восстановить его и потерять свои правки.

Не зная деталей оси - не возможно ли создать подкласс Stub и переопределить 'createCall'? Axis не будет касаться этого подкласса, и вы можете установить свои свойства в переопределенном методе createCall

...