2014-09-30 3 views
0

У меня есть простой веб-сервис в Java и Weblogic. В этой веб-службе у меня есть метод, который получает некоторые данные, вызывает другой веб-сервис, записывает в БД и затем отвечает с результатом.Как сделать веб-сервис в Java, который может быть вызван несколькими пользователями

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

Проблема заключается в том, что когда я вызываю метод веб-службы, я запускаю некоторые переменные, которые мне нужно анализировать и сохранять в БД, поэтому, если вызов прерывается, эти переменные обновляются и когда первый вызов заканчивается, результат не является (они имеют значения init).

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

Что это лучший способ сделать это?

Большое спасибо

+1

Какая структура веб-сервисов вы используете? это чистый JEE? (т. е. чистые сервлеты, весна ...) – jjmontes

+2

Не сохраняйте какое-либо состояние в классе, который обрабатывает вызовы webservice (независимо от технологии, сохраняет все методы-локальные) и объединяет соединение с базой данных. – kolossus

+0

Я использую Java JDK 1.6, и это только java. –

ответ

0

Благодарим вас за комментарий kolossus, я решил удалить глобальные переменные и создать только локальные переменные, поэтому каждый вызов создаст новую переменную и не перезапишет обычные переменные.

0

, когда вы начнете писать клиента конкретных приложений, вы должны сохранить данные для состояния клиента в вашей БД. Итак, когда каждый клиент обращается к вашему веб-серверу с помощью своего файла cookie/session, вы можете получить идентификатор клиента (зашифрованный в стороне cookie/сеанс) и оценить параметры на стороне сервера на основе значений клиента в БД.

+0

Спасибо, но я думаю, что это не то, что я ищу. У меня нет состояния клиента, я хочу, чтобы каждый вызов не перезаписывал переменные из другого вызова –