четверг, 1 декабря 2011 г.

Анонсирован WebLogic Server 12c


C - обозначает Cloud.

Посмотрел две презентации, приуроченные к выходу Oracle Fusion Middleware WebLogic Server 12c. Обещают, что данный продукт будет доступен для скачивания с OTN на следующей неделе. Технический номер версии будет - 12.1.1. Вероятно, Oracle отказывается от принятой сейчас запутанной системы нумерации версий, при которой WebLogic Server 10.3.X называется WebLogic Server 11g, что не может не радовать. В 2012-м году обещали так же выход остальных компонентов Fusion Middleware, например - Oracle SOA Suite.

UPD 10.12.2011: WebLogic Server 12c доступен для скачивания на OTN.

воскресенье, 27 ноября 2011 г.

Использование Oracle MDS для хранения общих объектов композитных приложений


Oracle Metadata Services – компонент Oracle Fusion Middleware, предназначенный для управления метаданными, т.е. данными о данных. К метаданным в терминах Oracle относятся в частности WSDL-описания веб-сервисов, XSD-схемы, а так же другие XML-документы. Данная инструкция содержит описание процесса настройки подключения к серверу метаданных из Oracle JDeveloper, развертывания метаданных на сервере и использования метаданных в композитном приложении.

воскресенье, 25 сентября 2011 г.

Типичные ошибки, допускаемые при внедрении информационных систем


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

В своем посте Software product management Максим Смирнов - архитектор из Билайн - правильно указал на пять классических ошибок, которые совершают внедренцы. Я хочу привести свое видение проблемы. Некоторые мои ошибки пересекаются со списком Максима, некоторые - дополняют его.

среда, 7 сентября 2011 г.

Использование PhantomReferences в Java


Платформа Java предоставляет несколько типов ссылок для связи между объектами:

  1. Жесткие ссылки (Strong References) - стандартные, известные нам ссылки. Если на объект есть хоть одна жесткая ссылка, то данный объект не будет утилизирован при сборке мусора.

  2. Мягкие ссылки (Soft References) - создаются с помощью вызова new SoftReference<T>(T obj, ReferenceQueue<T> queue) или new SoftReference(T obj). Если на объект есть только мягкая ссылка, то будет выполнена попытка утилизации данного объекта при сборке мусора в случае, если приложению не хватает памяти.

  3. Слабые ссылки (WeakReferences) - создаются с помощью вызова new WeakReference<T>(T obj, ReferenceQueue<T> queue) или new WeakReference<T>(T obj). Если на объект есть только слабая ссылка, то будет выполнена попытка утилизации данного объекта при сборке мусора.

  4. Фантомные ссылки (PhantomReferences) - создаются с помощью вызова new PhantomReference<T>(T obj, ReferenceQueue<T> queue). Если на объект есть только фантомная ссылка, то будет выполнена попытка утилизации данного объекта при сборке мусора. Сам объект при этом не будет удален из памяти до тех пор, пока на него существует фантомная ссылка или данная фантомная ссылка не очищена с помощью вызова метода clear(). Так же стоит заметить, что метод get() фантомной ссылки всегда возвращает null.


Возникает вполне закономерный вопрос: зачем нужны ссылки, которые фактически держат объект в памяти, но по которым к нему нельзя получить доступ?

четверг, 7 июля 2011 г.

Построение композитного сервиса с помощью Oracle Service Bus


В состав Oracle Service Bus входит очень мощное средство управления последовательностью вызовов сервисов, которое называется Split-Join. Данный компонент позволяет разделить входное сообщение на части (паттерн Splitter, здесь и далее будут упоминаться паттерны из каталога EAI), пропустить данные части через разные маршруты обработки, а затем агрегировать результаты (паттерн Agregator). Сервис, агрегирующий результаты вызовов других сервисов называется композитным.

Предположим, что у нас есть два сервиса, возвращающих информацию о пользователе по его идентификатору. Один сервис - UserInfo возвращает общую информацию, такую как имя, фамилия, логин, а другой сервис - UserEmails - возвращает список почтовых адресов пользователя. Оба сервиса принимают на вход идентификатор пользователя в виде строки длиной в пять символов. Нам необходимо построить композитный сервис, который будет параллельно вызывать данные сервисы и агрегировать результаты этих вызовов в единое сообщение, включающее имя, фамилию, логин и список почтовых адресов пользователя.

среда, 6 июля 2011 г.

Трансформация сообщений в Oracle Service Bus с использованием XSLT и XQuery


Продолжаем знакомство с потоком обработки сообщений (Message Flow) Oracle Service Bus (OSB). Сегодня мы рассмотрим как настроить трансформацию сообщений из одного XML-формата в другой перед вызовом Business Service, используя XQuery- и XSLТ-преобразования. Разовьем пример, начатый в предыдущей заметке.

Динамическая маршрутизация в Oracle Service Bus


В Oracle Service Bus (OSB) используются следующие концепции:

  • Business Service осуществляет связь между тем сервисом, который необходимо вызвать, и шиной;

  • Proxy Service осуществляет связь между клиентом и шиной;

  • Message Flow поток обработки сообщений, осуществляет связь между Proxy Service и одним или несколькими Business Service. Поток обработки сообщений может быть довольно сложным и включать в себя маршрутизацию, трансформацию, параллельное исполнение и другие действия. Физически Message Flow описывается в Proxy Service.





Сегодня мы рассмотрим как настроить такое действие потока обработки сообщений, как динамическая маршрутизация. Под динамической маршрутизацией в OSB понимается маршрутизация, основанная на содержимом сообщения - т.н. Content-based Routing. Данный тип маршрутизации является альтернативой т.н. статической маршрутизации - типу маршрутизации, при котором маршрут сообщения задается на этапе разработки.