2014-08-30 3 views
0

Я использую следующие подходы для создания клиента веб-сервиса. Я мог бы с уверенностью узнать, установлено ли соединение между клиентом и сервером после создания экземпляра заглушки, например, следующего. В противном случае Устанавливается соединение между клиентом и сервером после вызова удаленного метода, призывающую такие как stub.xxxmethod(), myervicePort.xxxMetho()Подход к созданию клиента Webservice

RPC/Encoded 
stub = new MyWsRPCPortStub(new URL(), new MyWsRPCLocator()); 
stub.setTimeout(pdbTimeout); 

Document/Literal 
MyServicePort myervicePort = service.getMyServicePort(); 

После обучения на поставленный выше вопрос я собираюсь решить, когда будет создан экземпляр заглушки? Я имею в виду там будет два пути:

1- создать только один экземпляр заглушки в приложении, я имею в виду, я буду использовать одноплодной шаблон

2- создать экземпляр заглушки перед вызовом вызовом метода каждый раз

Что если использовать только один экземпляр заглушки многопоточного appiication, каждый поток открытых разностные розетки в то же время при вызове stub.xxMethod()

в то же время T1-> stub.xxMethod() Т2> заглушки. xxMethod() T3-> stub.xxMethod()

ответ

1

Прежде всего утверждения, которые вы упоминали о потреблении веб-сервиса в клиенте, не зависят от стиля веб-службы - RPC или Document Literal. Клиент одинаковый для обоих стилей. Эти стили просто определяют, как структурировано SOAP-сообщение, обменянное между клиентом и сервером. Сообщение для начала: here.

Сообщения отправляются между клиентом и сервером с использованием протокола SOAP, работающего по протоколу HTTP. Следовательно, связь между клиентом и сервером должна быть в основном рассмотрена как обычная модель HTTP-запроса/ответа, а не когда и как устанавливается соединение между ними и которое поддерживается заданием TCP-протокола; и API в клиенте веб-службы и основной ОС полностью абстрагируют эти данные для нас.

Однако, если вы хотите узнать, когда клиент HTTP-запросов обрабатывает HTTP-запрос; вы можете проследить его, используя любой из инструментов захвата пакетов, например, «wirehark». Типично, если у вас есть веб-сервис только с одним методом; обычно возникает запрос HTTP GET, когда вы используете Service service = Service.create(url, qname) api и HTTP POST на YourWSInterface.xxxmethod().

О том, когда следует создать заглушку; в многопоточной среде; если вы собираетесь использовать BindingProvider на клиентских заглушках для установки данных (а не только простых вызовов только для чтения) перед отправкой в ​​веб-сервис; да; вам потребуется некоторая синхронизация в клиентском коде (с одним экземпляром) или создание пула клиентских прокси (несколько экземпляров с несколькими пулами); в зависимости от требований вашего приложения.

Надеюсь, я ответил на вопрос.

+0

последних двух предложений достаточно для меня. tnks. –

+0

Спасибо, что помогли, и помогли мне, если бы это помогло! – Abhin

+0

, если несколько потоков с использованием одного экземпляра экземпляра, может ли каждый поток открыть другое соединение, PLS посмотреть мой обновленный вопрос выше –

Смежные вопросы