пятница, 1 июля 2016 г.

Управление доступом к Oracle MAF приложению(Oracle Mobile Application Framework Securing)

Для большинства мобильных приложений необходимо создавать авторизацию. В этой статье я хочу вам рассказать об этом.

MAF представляет пользователю login страницу  когда активирована возможность работы с безопасностью в приложении. И только тогда, когда пользователь успешно введет авторизационные данные, MAF отрендерит view, UI компоненты или страницу приложения. Так же можно,  что бы часть страниц были доступны и анонимным пользователям( не прошедшим авторизацию).

MAF приложение можно настроить так, чтобы учетные данные пользователя были  проверены на удаленном сервере авторизации (таких как Oracle Access Manager Identity Server используемым веб-приложениями Oracle ADF) или же  на локольном  устройстве пользователя. Для поддержки локальных и удаленных режима подключения. MAF поддерживает следующие протоколы аутентификации:

  • HTTP Basic
  • Mobile-Social
  • OAuth
  • Web SSO


воскресенье, 5 июня 2016 г.

Интеграция Oracle JET в ADF (Integration Oracle JET in ADF)

Ранее я рассказывал о том, что в 2015 году Oracle представил набор библиотек  для создания клиентских приложений: http://www.oracle-adf.info/2016/03/oracle-jet.html

В этой статье я хочу рассказать как можно встроить этот набор и использовать его  вместе с ADF. JET часть я возьму с предыдущей  статьи : https://github.com/JealousyM/jet-app

1. Создайте Fusion ADF приложение.
2. Скопируйте Jet файлы во ViewConroller->public_html

суббота, 28 мая 2016 г.

Настройка производительности ADF приложений (ADF performance tuning)

При создании приложений, всегда в какой то момент встает вопрос производительности. Страницы начинают грузиться медленнее, данные с БД долго подгружаются и вообще всё не так. Что бы этого избежать этого , в начале и течении всей  разработки необходимо придерживаться некоторых правил. Об этом я и хочу сегодня рассказать.

Основные рекомендации по настройке

Перед сборкой, настройкой  и деплоем приложения, для достижения оптимальной производительности рекомендуется  выполнить следующее :
  • Конфигурация и профилирование ADF
  • Повышение производительности ADF
  • Настройка атрибутов ADF компонентов
  • Повышение производительности компонентов Table and Tree Components
  • Повышение производительности для  autoSuggest(автозаполнение)
  • Доставка данных( Lazy или Immediate)


воскресенье, 8 мая 2016 г.

Использование WebSocket в ADF (Using WebSocket in ADF)

Начиная с JDeveloper 12.1.3.0  в ADF появилась поддержка Java API for WebSockets.
WebSocket — это протокол связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени.Он позволяет пересылать любые данные, на любой домен, безопасно и почти без лишнего сетевого трафика.

Для демонстрации WebSocket в ADF создадим приложение,   в котором будем вводить сообщение в inputtext.

1. Создайте Fusion Middleware  приложение
2. В это приложение  добавьте проект Web Socket Project


пятница, 29 апреля 2016 г.

Интеграция Solr в ADF (Integration Solr in ADF)

Solr  -  платформа полнотекстового поиска с открытым исходным кодом, основанная на проекте Apache Lucene. Её основные возможности: полнотекстовый поиск, подсветка результатов, фасетный поиск, динамическая кластеризация, интеграция с базами данных, обработка документов со сложным форматом (например, Word, PDF). Так как в Solr есть возможность распределенного поиска и репликации, Solr хорошо масштабируем. Solr является самым популярным поисковым движком.

В этой статье я хочу интегрировать поиск Solr в ADF. Я создам таблицу со 100 000 записями, проиндексирую их при помощи Solr а потом найду данные. Начнём.

1. Скачайте последнюю версию Solr(http://lucene.apache.org/solr/downloads.html). Сейчас это 6-ая версия. В скачанном архиве зайдите в папку bin и выполните команду:

solr start

После того как появится сообщение "Waiting up to 30 to see Solr running on port 8983
Started Solr server on port 8983. Happy searching!", вы можете зайти на запущенный сервер(если вы хотите, что бы сервер запустился не на 8983 порте,  используйте параметр -p. Например:  solr start -p 8984 ) :


http://localhost:8983/solr



воскресенье, 24 апреля 2016 г.

Взаимодействие с данными в Oracle MAF(ADF Mobile). Часть 3. Использование REST-JSON Web сервисов (Using REST-JSON Web Services in Oracle MAF)

Взаимодействие с данными в Oracle MAF(ADF Mobile). Часть 1. Использование SOAP-XML Web сервисов ( Using SOAP-XML Web Services in Oracle MAF)
Взаимодействие с данными в Oracle MAF(ADF Mobile). Часть 2. Работа с БД ( Work with DB in Oracle MAF)

Ранее я рассказывал как взаимодествовать с БД и SOAP-XML сервисами. В мобильных приложениях чаще всего используют REST-JSON сервисы,  и в этой статье я хочу рассказать как в MAF работать с ними. Приступим.
Что бы вызвать REST-JSON сервисы из MAF приложений , вы должны использовать RestServiceAdapter интерфейс .  Все что нужно для корректной работы интерфейса RestServiceAdapter это соединение к сервису. Для этого создайте REST или URL connection  в вашем MAF приложении. Я взял  открытый для общего доступа сервис http://jsonplaceholder.typicode.com



Вызов RestServiceAdapter  выглядит следующим образом :


пятница, 8 апреля 2016 г.

Развертывание ADF приложений в Oracle Java Cloud Service (Build and deploy ADF applications to Oracle Java Cloud Service)

Облачная служба Oracle Java Cloud Service – это PaaS-решение корпоративного класса, предоставляющее комплексную платформу и инфраструктуру для создания, развертывания и обслуживания приложений Java EE. В качестве контейнера приложений используется сервер приложений Oracle WebLogic. Поддерживаются все редакции Oracle WebLogic Server 11g и Oracle WebLogic Server 12c

Пользователи имеют полный доступ к своим приложениям, а Oracle размещает у себя виртуальные машины и облачное хранилище.

Доступ к службе осуществляется по подписке. На месяц можно оформить бесплатную подписку

В этот статье я хочу рассказать как собирать и развертывать ADF проекты в Oracle Java Cloud Service (OJCS) , а так же  рассказать о его возможностях.

В OJCS для разработки используется сервис Developer. Что бы подписаться на него, нужно   зайти на следующую страницу: https://cloud.oracle.com/developer_service

 


четверг, 17 марта 2016 г.

Полезный код для managed bean в ADF(Useful code for managed beans in ADF)

Oracle ADF имеет  определенный набор классов, которые помогают в разработке  приложений. Сегодня я хочу рассказать, что это за классы и их возможности.

BindingContext, BindingContainer DCBindingContainer

BindingContext, BindingContainer and DCBindingContainer классы. Эти классы необходимы, что получать данные из ADF pagedef объектов.

//получение BindingContext,BindingContainer   и DCBindingContainer 
BindingContext bc = BindingContext.getCurrent();
BindingContainer bcon = bc.getCurrentBindingsEntry();
DCBindingContainer dcbcon = (DCBindingContainer) bc.getCurrentBindingsEntry(); 

List<AttributeBinding> attr = bcon.getAttributeBindings();
List<OperationBinding> oper = bcon.getOperationBindings();
List<ControlBinding> ctrl = bcon.getControlBindings();
List<AttributeBinding> attrDcbcon = dcbcon.getAttributeBindings();
List<OperationBinding> operDcbcon = dcbcon.getOperationBindings();
List iterDcbcon = dcbcon.getIterBindingList(); List exec = dcbcon.getExecutableBindings(); List<ControlBinding> ctrlDcbcon = dcbcon.getControlBindings();

//получение метода,установка значений его параметров и выполнение
OperationBinding method = dcbcon .getOperationBinding("methodAction");
Map paramsMap = method.getParamsMap();
paramsMap.put("param","value") ; method.execute();
List errors = method.getErrors();

//получение аттрибута и установка нового значения
AttributeBinding attr = (AttributeBinding)dcbcon.getControlBinding("test");
attr.setInputValue("test");

//получение данных из ADF tree и table

FacesCtrlHierBinding treeData = (FacesCtrlHierBinding)dcbcon.getControlBinding("tree");
Row[] rows = treeData.getAllRowsInRange();

//получение данных из итератора
DCIteratorBinding iterBind= (DCIteratorBinding)dcbcon.get("Iterator");
String attribute = (String)iterBind.getCurrentRow().getAttribute("field");

// обновление итератора
iterBind.executeQuery();
iterBind.refresh(DCIteratorBinding.RANGESIZE_UNLIMITED);

суббота, 5 марта 2016 г.

Oracle JET. Описание и создание простого приложения (Oracle JET. Creating simple application)

В 2015 году на Oracle OpenWorld 2015 был представлен народу Oracle JavaScript Extension Toolkit (Oracle JET). Oracle JET - это  набор JavaScript библиотек находящихся в открытом доступе и созданных Oracle для более простого  и эффективного как это возможно построения клиентских приложений, которые  используют и   взаимодействуют с сервисами и продуктами Oracle

Oracle JET предназначен для :

  • добавления интерактивности к существующим страницам
  • добавления более тесной  интеграции с сервисами Oracle для существующего приложения
  • создания нового полноценного клиентского приложения
Oracle Jet использует следующие библиотеки и технологии(большинство вы технологий вы знаете) :


  • jQuery - JavaScript библиотека , фокусирующаяся на взаимодействии JavaScript и HTML
  • jQuery UI JavaScript библиотека   для создания насыщенного пользовательского интерфейса в веб-приложениях 
  • Knockout - JavaScript библиотека, позволяющая реализовать Model-View-View Model (MVVM) паттерн на клиенте
  • RequireJS - загрузчик модулей использующийся для управления библиотеками и загрузки ресурсов. RequireJS использует  Asynchronous Module Definition (AMD) концепцию
  • JavaScript - всеми нами известный прототипно-ориентированный сценарный язык программирования : )
  • CSS (Cascading Style Sheets) - формальный язык описания внешнего вида документа, написанного с использованием языка разметки.
  • HTML 5 язык для структурирования и представления содержимого в интернете
  • SASS (Syntactically Awesome Style Sheets) - это метаязык на основе CSS, предназначение которого увеличивать уровень абстракции CSS кода и упрощать файлы каскадных таблиц стиля. SASS предоставляет больше возможностей и свободы при написании CSS для создания сайтов.

воскресенье, 28 февраля 2016 г.

Автоматизация сборки и деплоя ADF приложений при помощи Hudson и Ant (Build and Deployment ADF applications using Ant and Hudson)

Когда разработка ведётся не дома  на коленках, то сборку приложений обычно автоматизируют. Для этого существует достаточно большое количество средств (Hudson,Jenkins, TeamCity и т.д.). В этой статье я хочу рассказать об автоматизации сборки ADF приложений при помощи Hudson и Ant.

Hudson — инструмент непрерывной интеграции(Continuous Integration), написанный на Java. Поддерживает инструментарий для работы с разными системами контроля версий, включая CVS, Subversion, Mercurial, Git и Clearcase, может собирать проекты Apache Ant и Apache Maven, а также исполнять shell-скрипты и команды Windows.

Непрерывная интеграция -  это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта

Итак, сначала нужно установить Hudson. Для этого нужно зайти на официальный сайт  http://hudson-ci.org и скачать там последнюю версию war файла. Скачав файл, нужно запустить команду :

java -jar hudson-3.3.3.war --httpPort=8989 , где hudson-3.3.3.war - название скаченного файла, а httpPort=8989 - порт на котором будет доступен сервер.



вторник, 16 февраля 2016 г.

Интеграция RSS в ADF (Integration RSS in Oracle ADF)

RSS (Rich Site Summary — обогащённая сводка сайта) - предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п. Обычно с помощью RSS 2.0 даётся краткое описание новой информации, появившейся на сайте, и ссылка на её полную версию. Интернет-ресурс в формате RSS называется RSS-каналом, RSS-лентой или RSS-фидом.
Документ RSS состоит их двух частей: загаловка  и статей.
В загаловке обязательными являются три элемента : 
  • title - имя канала 
  • link - ссылка на сайт, с которым установлен канал связи
  • description - описание канала
RSS-лента может состоять из множества статей. Основными составляющими статьи являются заголовок и описание.

В этой статье я хочу рассказать как интегрировать RSS ленту в ADF приложение.
1. Создайте ADF приложение.
2. Создайте HTTP Servlet (в мастере создания выберите  : Configuration file(web.xml) и поставьие галочку  в doGet() )



суббота, 13 февраля 2016 г.

WebLogic JMS и работа с ним в ADF ( Creating Weblogic JMS Server and work with him in ADF)

Добрый день. В какой то момент у вас может появится необходимость обмена данными между вашими приложениями. Для этого можно использовать  Java Message Service (JMS).
Для Oracle Fusion Middleware продуктов используется  WebLogic JMS (описание на англ: https://docs.oracle.com/cd/E24329_01/web.1211/e24387/fund.htm#JMSPG116). Он интегрирован в  WebLogic Server.

Немного теории:

JMS - это  набор интерфейсов и классов  для рассылки сообщений, позволяющий приложениям, выполненным на платформе Java EE, создавать, посылать, получать и читать сообщения.
JMS поддерживает две модели обмена сообщениями: «Point-to-point» и «Publish-subscribe».

Point-to-point модель применяется, когда одному или нескольким senders(отправителям) необходимо послать сообщение одному адресату (receiver).Модель основана на message queue. Отправитель посылают сообщения в очередь, а получатель читает сообщения из очереди.

Publish-subscribe модель применима, когда одному или нескольким отправителям необходимо послать сообщение одному или нескольким получателям. Данная модель основана на понятии message topic.Издатели посылают сообщения в topic, и все подписчики данного topic получают эти сообщения.

воскресенье, 31 января 2016 г.

Взаимодействие с данными в Oracle MAF(ADF Mobile). Часть 2. Работа с БД ( Work with DB in Oracle MAF)

Часть 1: http://www.oracle-adf.info/2015/05/oracle-mafadf-mobile-1-soap-xml-web.html

Обычно мобильные приложения  работают с данными при помощи сервисов. Но часто бывают случаи когда данные нужно хранить на мобильном устройстве. В этой статье я расскажу как работать с SQLite в MAF. Рабочая версия приложения c SQLite находится  на github:  https://github.com/JealousyM/sqlite-maf

SQLite компактная встраиваемая реляционная база данных и идеально подходит для хранения данных в мобильных устройствах.

Работа с SQLLite Database.


Первым шагом является  создание самой бд при помощи JDBC.  В SQLite каждая бд находится в собственном файле. Есть два способа для создания бд SQLite. Первый способ - это использование DML запросов через JDBC(таких как create table). Второй способ - это использование ранее созданного файла. Файл будет упакован с кодом вашего мобильного приложения. Он должен храниться в определенном месте, что бы ваше приложение могло загрузить его. Существует много утилит для создания и работы с такими файлами (MesaSQLite, SQLiteManager,  SQLiteDatabase Browser)

воскресенье, 17 января 2016 г.

Использование Apache POI для работы с Microsoft Office в ADF (Using Apache POI in ADF)

В далёком 2014 году я писал, как можно формировать отчёты в ADF пот помощи Jasper Reports (http://www.oracle-adf.info/2014/04/adf-jasperreport.html ). Это достаточно громоздкий способ, требующий установки разработки отчетов. В этой статье я хочу рассказать как можно формировать отчёты при помощи Apache POI. Apache POI — это библиотека на языке Java для чтения и записи документов Microsoft Office,таких как Excel, PowerPoint и Word

Создадим простое приложение, которое по нажатию на кнопку будет генерировать Word-овский документ(исходники этого приложения можно скачать на github: https://github.com/JealousyM/poi-adf.

1. Скачайте последнюю стабильную версию Apache POI с сайта : https://poi.apache.org/download.html

2. Создайте Fusion Web Application

3.Из скаченного архива добавьте в Libraries and Classpath файл poi-xx-xxxx.jar,poi-xml-xx-xxxx.jar b poi-xml-shemas-xx-xxxx.jar, где xx-xxxx версия и дата poi.

 


вторник, 12 января 2016 г.

Интеграция Spring В ADF (Integreation Spring in ADF)

Фрэймворк Spring очень популярен при разработке Java приложений.  И в какой то момент в вашем проекте может появиться необходимость его использовать. В этой статье я хочу объяснить как интегрировать Spring в ADF. Начнём

По умолчанию Jdev не даёт возможности работы со Spring. Сначала нужно установить extension: Spring & Oracle Weblogic Sca