Oracle Metadata Services – компонент Oracle Fusion Middleware, предназначенный для управления метаданными, т.е. данными о данных. К метаданным в терминах Oracle относятся в частности WSDL-описания веб-сервисов, XSD-схемы, а так же другие XML-документы. Данная инструкция содержит описание процесса настройки подключения к серверу метаданных из Oracle JDeveloper, развертывания метаданных на сервере и использования метаданных в композитном приложении.
воскресенье, 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 предоставляет несколько типов ссылок для связи между объектами:
- Жесткие ссылки (Strong References) - стандартные, известные нам ссылки. Если на объект есть хоть одна жесткая ссылка, то данный объект не будет утилизирован при сборке мусора.
- Мягкие ссылки (Soft References) - создаются с помощью вызова new SoftReference<T>(T obj, ReferenceQueue<T> queue) или new SoftReference
(T obj) . Если на объект есть только мягкая ссылка, то будет выполнена попытка утилизации данного объекта при сборке мусора в случае, если приложению не хватает памяти. - Слабые ссылки (WeakReferences) - создаются с помощью вызова new WeakReference<T>(T obj, ReferenceQueue<T> queue) или new WeakReference<T>(T obj). Если на объект есть только слабая ссылка, то будет выполнена попытка утилизации данного объекта при сборке мусора.
- Фантомные ссылки (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. Данный тип маршрутизации является альтернативой т.н. статической маршрутизации - типу маршрутизации, при котором маршрут сообщения задается на этапе разработки.
среда, 29 июня 2011 г.
Транзакционное чтение из JMS-очереди в Oracle SOA Suite
Одним из наиболее применяемых паттернов интеграции информационных систем является паттерн "Фильтры и трубы". При построении интеграционного решения на Oracle SOA Suite в качестве "фильтров" выступают композиты, а в качестве "труб" удобно использовать JMS-очереди.
Зачастую необходимо реализовать не просто считывание сообщения из "трубы", а считывание и обработку сообщения в рамках одной транзакции, при этом при откате данной транзакции сообщение должно возвращаться в очередь, из которой было считано. В данной заметке мы рассмотрим как добиться такого поведения, а так же какие существуют ограничения, накладываемые Oracle SOA Suite'ом на реализацию транзакционного чтения из JMS.
Подписаться на:
Сообщения (RSS)