Flex удаленный объект нескольких записей в базе данных одной и той же информации - PullRequest
1 голос
/ 11 февраля 2012

Проблема: Следующая проблема возникает в двух разных случаях.

Case1: Когда клиент делает запрос remoteObject, т.е. чтобы сохранить некоторую информацию ... Вызывается метод Java SAVE_INFO. Если запрос не удался, т.е. вернулся в FaultHandler (мы сохраняем информацию в arrayCollection). Позже мы снова вызываем SAVE_INFO для каждого элемента в arrayCollection, т. Е. (Если arrayCollection имеет 10 элементов. Мы вызываем 10 раз один и тот же метод. Я знаю, что это глупо, но у нас нет контроля над Java для написания метода перегрузки). Иногда мы видим, что в БД есть несколько записей одной и той же информации. Я не уверен, происходит ли это при циклическом сборе массива и выполнении вызовов или во время обычного одноразового вызова. Мы не смогли найти образец для воспроизведения. Уровень Java LOG находится на уровне ошибок в производстве. невозможно установить INFO в производственном режиме для отслеживания всех вызовов. Мы не знаем, является ли эта запись, сохраненная несколько раз, в arrayCollection или обычной.

Flex3 RemoteObject -> WAS 6.1, lCDS 3.0, Java1.5 -> Веб-сервис -> Java (спящий режим) -> Oracle 10g

Case2: Когда приложение остается открытым, и пользователь уходит на следующий день и отправляет информацию на следующее утро, мы видим дубликаты записей в БД этой информации. (Здесь нет arrayCollection. Простой прямой вызов)

Flex3 RemoteObject -> OC4J Blazeds Java1.5 (JDBC) -> Oracle 10g.

Недавно одно из наших приложений для тестирования в случае 2 нашло этот шаблон, и я начинаю думать, что это может быть и в случае 1 .. пользователи могут уходить на обед / перерыв и повторно отправлять arrayCollection после возвращения. Во время обеда java мог убить сеансы для клиента и после повторной отправки 10 одновременно ... java, возможно, создал сеанс с 10 дубликатами ... Опять же, я предполагаю, что это может быть совершенно неправильно.

Я не знаю, вызывает ли пакетные вызовы flex remoteObject amf ошибку, или дубликаты сеанса Java вызывают ошибку, или оракул делает это. Я не имею ни малейшего понятия или идеи, где проблема может быть.

Помогите пожалуйста ???

1 Ответ

0 голосов
/ 12 февраля 2012

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

Как ни странно, это может быть проблемой с несколькими сеансами от одного и того же клиента, когда выполняется несколько соединенийна службу.Обычно это происходит из-за того, что удаленный хост отключил файлы cookie сеанса.Сеансовые куки должны быть включены для правильного управления клиентским соединением в Blaze.

В этом случае вам нужно будет написать код, чтобы ограничить количество одновременных соединений, создаваемых клиентом.Это может быть сделано на странице JSP, например.Чтобы проверить это, вы можете написать код для хранения дополнительного поля в таблице с количеством соединений.Таким образом, вы можете увидеть, поступают ли дубликаты данных из одного сеанса.

Надеюсь, это поможет.

...