Flex удаленный объект нескольких записей в базе данных одной и той же информации
Проблема: Следующая проблема возникает в двух разных случаях.
Случай 1: когда клиент делает запрос 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
Случай 2: когда приложение остается открытым, а пользователь уходит на следующий день и отправляет информацию на следующее утро, мы видим дубликаты записей в БД этой информации. (Нет arrayCollection здесь. Простой прямой вызов)
Flex3 RemoteObject -> OC4J Blazeds Java1.5 (JDBC) -> Oracle 10g.
Недавно одно из наших тестировщиков в приложении 2 нашло этот шаблон, и я начинаю думать, что это может быть и в случае 1.. пользователи могут уходить на обед / перерыв и повторно отправлять arrayCollection после возвращения. Во время обеда java мог убить сеансы для клиента и после повторной отправки 10 одновременно... java, возможно, создал сеанс 10 дубликатов... Опять же, я предполагаю, что это может быть совершенно неправильно.
Я не знаю, вызывает ли пакетные вызовы flex remoteObject amf ошибку, или дубликаты сеанса Java вызывают ошибку, или оракул делает это. Я не имею ни малейшего понятия или идеи, где проблема может быть.
Помогите, пожалуйста???
1 ответ
Я думаю, что вы правы, полагая, что соединение не работает, но это может быть связано с тем, что в вашей коллекции есть дубликаты. Быстрый тест - переписать код arrayCollection, чтобы не допустить дублирования, и посмотреть, исправит ли это.
Как ни странно, это может быть проблемой с несколькими сеансами от одного и того же клиента, когда выполняется несколько подключений к службе. Обычно это происходит из-за того, что удаленный хост отключил сеансовые куки. Сессионные куки должны быть включены для правильного управления клиентским подключением в Blaze.
В этом случае вам нужно будет написать код, чтобы ограничить количество одновременных подключений, создаваемых клиентом. Это может быть сделано на странице JSP, например. Чтобы проверить это, вы можете написать код для хранения дополнительного поля в таблице с количеством соединений. Таким образом, вы можете увидеть, поступают ли дубликаты данных в одном сеансе.
Надеюсь это поможет.