2012-01-27 2 views
0

У меня есть веб-сервис (в java) в Oracle WebLogic 10.3, который выполняет все виды запросов к базе данных. Недавно я начал стресс-тесты. Он прошел тесты повторения (последовательно вызовите WS несколько раз в несколько раз), но проблемы возникают, когда началось тестирование параллелизма. Выполнение целых 2 одновременных вызовов приводит к ошибкам. При выполнении надлежащих тестов результаты выглядели так, как будто WS не мог обрабатывать одновременные вызовы вообще, что, очевидно, не должно быть. Ошибка включала исключения нулевого указателя, закрытые соединения или подготовленные операторы и т. Д. Я немного в тупике, потому что мне не удалось найти какие-либо параметры конфигурации, которые могли бы повлиять на это, но опять же мои знания о WLS довольно ограничены.Параллельные вызовы Oracle WebLogic 10.3 Проблемы с веб-сервисом

Спасибо за любые предложения заранее.

+0

Вы уверены, что его WebLogic, а не ваши данные приложения обмена неправильно? –

+0

Да, я пришел к такому же неудачному выводу. Когда я создавал веб-службы, хотя WebLogic использовал объединение для одновременных вызовов, но, похоже, это было не так. Вероятно, эта ошибка возникла из-за моего довольно ограниченного знания WebLogic. Я исправил службы, чтобы они были потокобезопасными, и теперь он работает нормально. – Xargos

ответ

0

Просто так есть четкий ответ.

При наличии нескольких одновременных вызовов данной веб-службы (в этом случае использовался SOAP/JAX-WS) на WLS, используется один и тот же объект (не используются пулы или очереди), поэтому реализация должна быть потоком безопасно.

EDIT:

Для уточнения: Предположим, есть атрибут класса в класс реализации WebService, порожденного JDeveloper. Если вы изменяете этот атрибут в своем веб-методе (а затем его используете), это вызовет проблемы синхронизации при вызове метода (т. Е. WS вызывается) одновременно. Когда я впервые начал создавать веб-службы, хотя весь WebService-объект был создан заново для каждого WS-вызова, но это, похоже, не так.

0

Ответ, который вы отметили как правильное, является абсолютно неправильным.

Методы webservice не должны быть сделаны для обеспечения безопасности потоков.

Webservice implenmtation of weblogic является многопоточным.

Это как для сервлетов

«сервлеты многопоточной. Servlet-приложения должны распознавать и обрабатывать это соответствующим образом. Если большие участки кода синхронизации, приложение эффективно становится однопоточный, и пропускная способность резко снижается. "

http://www.ibm.com/developerworks/websphere/library/bestpractices/avoiding_or_minimizing_synchronization_in_servlets.html

код внутри WS вы можете синхронизировать в зависимости от того, что вы делаете.

Does it make sense to synchronize web-service method?

+0

Игнорируя тот факт, что это не отвечает на реальный вопрос, я думаю, вы пропустили понимание того, о чем я говорил (или, скорее всего, я не очень хорошо объяснил свое мнение). Я далек от эксперта по этому вопросу, поэтому я просто говорю это, как я вижу. Если в классе реализации WebService, сгенерированном JDeveloper, есть атрибут класса, он изменяется в веб-методе, тогда это вызовет проблемы синхронизации при вызове метода (то есть WS вызывается) одновременно. Это ошибка новобранец, но затем я задал этот вопрос в год. Я отредактирую ответ. – Xargos

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