вторник, 8 ноября 2011 г.

Создаем реальное ADF-приложение - бесплатный тренинг для партнеров

Совместно с Jernej Kase проводим в конце ноября-начале декабря весьма интересный партнерский тренинг по Oracle ADF. Никаких презентаций, только JDeveloper и Weblogic на вашем ноутбуке и реальное приложение, которое создается за 4 дня в режиме follow me. Крайне рекомендую командам, которые уже начали пилотные или реальные проекты на Oracle ADF и хотят улучшить навыки за короткое время.  Jernej помимо всего прочего отличный специальст и в области .NET разработки, так что можно получить его консультации по теме сравнения функциональности .NET и Oracle ADF.  С английским языком помогу, не волнуйтесь. Как обычно для партнеров активности ISV Migration Center бесплатны.   Регистрируемся здесь.

четверг, 3 ноября 2011 г.

Polling-транспорты в OSB - как настроить transaction timeout.

Получил вопрос от партнера, реализующего проект с использованием Oracle Service Bus. Суть проблемы в следующем: есть proxy-сервис на основе файлового транспорта, сервис получает файл и производит его обработку, причем обработка длится около 30 минут. Ровно через 10 минут после начала обработки сервис стартует заново, начиная обрабатывать тот же самый файл. Оставим за рамками данного поста обсуждение архитектуры решения, и попробуем разобраться в причинах подобного поведения OSB.
Polling-транспорты в OSB (file, ftp, e-mail) работают следующим образом:
  • входящий файл/сообщение e-mail помещается в специальную JMS-очередь. 
  • каждую  очередь слушает специальный Message Driven Bean (MDB) и инициирует новую XA-транзакцию и начинает выполнение активностей, указанных в Request Pipeline proxy-сервиса
  • в случае возникновения ошибки или таймаута транзакция откатывается, сообщение из очереди не удаляется
  • будет ли произведена попытка еще раз обработать данное сообщение - зависит от соответствующих настроек очереди
Рассмотрим на примере файлового транспорта:
  • входящие файлы помещаются в очередь wlsb.internal.transport.task.queue.file, в Weblogic Console ее можно найти в Services->Messaging->JMS Modules->jmsResources.


  • у  очереди есть свойство Redelivery Limit, определяющее количество попыток повторно доставить сообщение в случае ошибки/таймаута при первичной доставке. Для нашей очереди оно равно 1, то есть будет производиться попытка один раз повторно доставить сообщение

  • MDB, слушающий данную очередь называется PolledMessageListenerMDBEJB и находится в составе Enterprise Application с именем File Transport Provider

  • у PolledMessageListenerMDBEJB на вкладке Configuration есть свойство Transaction Timeout, значение по умолчанию = 600 секунд (как раз те самые 10 минут из вышеописанной проблемы).  

То есть для оперативного решения проблемы требуется увеличить Transaction Timeout для данного MDB с 10 минут до например 1 часа.  Но это тревожный звонок, в среднесрочной перспективе предлагается подумать, является ли архитектура решения оптимальной.

среда, 2 ноября 2011 г.

Visio Stencils для создания UI-прототипов Oracle ADF приложений

Не секрет, что многие разработчики ПО не являются гуру в области usability, создаваемые ими пользователькие интерфейсы далеки от совершенства. С другой стороны, специалисты в области usability порой могут нарисовать такой интерфейс, который крайне проблематично реализовать разработчику. В марте этого года для Oracle ADF данную проблему решили  путем выпуска специального набора элементов (stencils) для Microsoft Visio, внешний вид которых соответствует реально существующим компонентам Oracle ADF Faces Rich Client.  Выдавав этот набор своему UI-дизайнеру вы можете быть уверены, что результат его работы по созданию прототипов пользовательского интерфейса будет реализуем в Oracle ADF.  Одна проблема – сайт samplecode.oracle.com, на который выложили ADF Visio stencils, не очень хорошо себя чувствует. Поэтому я решил выложить их у себя, можете скачивать по данной ссылке.  Enjoy!