Выполнение вызовов веб-службы по одному и тому же соединению - PullRequest
0 голосов
/ 17 декабря 2010

Я работаю над веб-сервисом на основе WSDL и использую Apache Axis 2. Я не эксперт по веб-сервисам, и человек, с которым я работаю, утверждает, что для того, чтобы этот конкретный веб-сервис работал два вызовы должны выполняться по одному и тому же соединению, т. е. с использованием http keep-alive (в сущности, существует метод «фиксации транзакции», который необходимо вызывать после метода «сохранения»). Кажется, это было бы довольно распространенной проблемой, но я ничего не нашел в Google.

Мне интересно, есть ли способ явно сказать Axis сделать это. Кроме того, как я могу проверить, действительно ли два вызова выполняются по одному и тому же соединению. Я полагаю, что некоторые программы мониторинга HTTP, такие как wireshark, могли бы сказать мне это, но я еще не установил их.

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Человек, с которым вы работаете, не прав. Даже если HTTP можно оптимизировать, используя keep-alive для обработки нескольких запросов по одному TCP-соединению, эта оптимизация должна быть прозрачной для вызывающего или вызываемого абонента, например, не должно иметь значения, делает ли клиент два запроса друг за другом в соединении keep-alive или использует два отдельных соединения.

Библиотеки Java (HttpURLConnection на стороне клиента и API сервлета на стороне сервера) даже не предоставляют доступа к этой информации, поэтому используемое программное обеспечение не может знать, как на самом деле выполняются запросы HTTP.

0 голосов
/ 17 декабря 2010

Вы можете использовать nmap текст ссылки , чтобы увидеть, что на самом деле работает на каждом порту.

Но если вы делаете 2 звонка одновременно, axis2 выбросит порт - это уже связанная ошибка. Ни один порт не может обрабатывать 2 запроса одновременно (мое мнение). Может быть, вы можете поставить его в очередь и сделать это последовательно. Но просто подтвердите и другие источники.

...