Groovy: Как изменить конечную точку с помощью ws-клиента? - PullRequest
0 голосов
/ 25 июля 2011

Я использую ws-клиент в проекте Grails для вызова веб-службы.

Это нормально, но он читает конечную точку из WSDL.

Как изменить конечную точку во время выполнения?

def proxy = new WSClient(wsdlURL, Thread.currentThread().getContextClassLoader());
proxy.setEndpoint(''); // this doesn't exists, ERROR!

Спасибо!

Примечание. Нужно ли использовать BindingProvider.ENDPOINT_ADDRESS_PROPERTY для решения этой проблемы?

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Вы можете изменить адрес конечной точки, выполнив следующий код:

// getter method for the wrapped client class
WSClient.metaClass.getCxfClient = { ->
    delegate.client
}
// init ws client
proxy = new WSClient(wsdlURL, this.class.classLoader)
proxy.initialize()
// get client instance
def cxfClient = proxy.cxfClient
// create new endpoint url
URL newUrl = new URL("http://edu-02:8080/educenter/services/sync")
// assign new created url to the client
cxfClient.getConduit().getTarget().getAddress().setValue(newUrl.toExternalForm());
0 голосов
/ 26 июля 2011

Использование ответа hitty5, инкапсулированного в методе ответа.

// class with proxy attribute instanciated
def setEndpoint(String endpoint){
    String url = new URL(endpoint).toExternalForm()
    this.proxy.client.conduit.target.address.setValue(url)
}

Дополнительно: для установки времени ожидания используйте:

proxy.client.conduit.clientSidePolicy.setReceiveTimeout(999)
proxy.client.conduit.clientSidePolicy.setConnectionTimeout(999)
...