JAXWS - требуется помощь для установки тайм-аута запроса WSDL

Я использую Metro 2.0 и J2SE5. Написанное мной приложение не знает о внешних WebService во время компиляции, оно находит их во время выполнения на основе XML-файла бизнес-логики, поэтому я выполняю запрос WSDL.

Пример кода, который я написал, выглядит следующим образом:

Строка wsdlServiceName = ...; он находит их во время выполнения на основе XML-файла бизнес-логики, поэтому я ...

Я использую Metro 2.0 и J2SE5. Написанное мной приложение не знает о внешних WebService во время компиляции, оно находит их во время выполнения на основе XML-файла бизнес-логики, поэтому я выполняю запрос WSDL.

Пример кода, который я написал, выглядит следующим образом:

Строка wsdlServiceName = ...; он находит их во время выполнения на основе XML-файла бизнес-логики, поэтому я ...

Я использую Metro 2.0 и J2SE5. Написанное мной приложение не знает о внешних WebService во время компиляции, оно находит их во время выполнения на основе XML-файла бизнес-логики, поэтому я выполняю запрос WSDL.

Пример кода, который я написал, выглядит следующим образом:

Строка wsdlServiceName = ...; Строка wsdlURL = ...; Полезная нагрузка документа = ...;

final String nsURI = ...;
final QName serviceName = new QName(nsURI, wsdlServiceName + "Service");
final QName servicePort = new QName(nsURI, wsdlServiceName + "Port");

// Create service and the dispatcher for the SOAP message
Service service = Service.create(new URL(wsdlURL), serviceName);
dispatch = service.createDispatch(servicePort, SOAPMessage.class, Service.Mode.MESSAGE);

// Set timeouts
dispatch.getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 3000);
dispatch.getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 3000);

// Create the outgoing SOAP request
SOAPBinding soapBinding = (SOAPBinding) dispatch.getBinding();
request = soapBinding.getMessageFactory().createMessage();

SOAPBody requestBody = request.getSOAPBody();
requestBody.addDocument(payload);

// Invoke web service operation 
SOAPMessage response = dispatch.invoke(request);

Тайм-аут работает правильно при вызове веб-службы (dispatcher.invoke (request))

ОДНАКО WSDL запрашивается до того, как установлены таймауты, и если веб-служба не отвечает до истечения времени ожидания соединения требуется 90 секунд.

Можно ли установить время ожидания до запроса WSDL? Вам нужен диспетчер для установки тайм-аутов, но это делается ПОСЛЕ создания службы, которая запрашивает WSDL ?! (т.е. Service.create ())

5
задан Alex 8 December 2010 в 12:26
поделиться