четверг, августа 30, 2012

Parse HTML-page and follow the link with Apache Camel

Как распарсить HTML-страницу и пройти по ссылкам с помощью Ahace Camel? Если кратко-легко! Выполним эту задачу не написав ни одной строчки кода.
На этот раз воспользуемся Spring-DSL, так как в данном случае он более лаконичен.


среда, августа 08, 2012

Calling Web Services with Apache Camel

Казалось бы, такая простая задача для интеграционной системы как вызов внешнего webservice, для Apache Camel вызывает затруднения. Прольем немного света. Вызов внешнего webservice на Apache Camel реально занимает одну строчку! Возьмем доступный всем открытый сервис погоды:
http://www.webservicex.com/globalweather.asmx?WSDL
Вот как вызвать этот сервис на Camel:
from("file:c:/data/inbox3").to("cxf:bean:calculatorWSEndpoint?defaultOperationName=GetWeather").to("file:c:/data/outbox");

Подробности под катом!

понедельник, августа 06, 2012

Apache Camel Message Processing Actions (Like OSB)


Работая в проекте с OSB, я удивился как легко и просто там работать с xml. Модификация сообщения на Oracle Service Bus действительно делается легко и непринужденно c помощью инструменов Assign, Delete, Insert. Как же наш Apache Camel? А вот в нем не все так просто. Но все необходимое у нас есть, попробуем сделать что-то подобное!

понедельник, июля 23, 2012

Minitroopers Train Bot

Для тех кто хочет немного отвлечься, есть замечательная браузерка minitroopers.com
Описание и прочее выкладывать не буду, в интернете информации море. Для тех кто увлекся могут почитать http://minitroopers.wikia.com/wiki/Mini_Troopers_Wiki
Чтобы не тратить драгоценное время на прокачку твинков своей основной армии, я написал простого бота, который отыгрывает за вас.

  1. Ежедневные бои. Выбирает первого кандидата из списка. По опыту первый самый слабый, но хотя если и проиграете не страшно.
  2. Миссия из трех попыток. Если она у вас открыта.
  3. 5 шагов рейда. Если рейд у твинка больше 5 боев, то на это стоит поглядеть!
Для запуска необходима Java.
java -jar minitroopers.jar

Имена твинков  заносятся в файлик minitroopers.property в следующем формате:
URL^login^password

Например:
http://dd-dealer.minitroopers.com^dd-dealer^ddpassword
http://izilla.minitroopers.com
Если ваш твинк запаролен то логин в 99% совпадает с URL, но если у вас это не так, можете посмотреть в браузере какой логин отправляется и записать его в файлик.

Ссылка на бинарник:
Файл с твинками:

Ну и по традиции подобных игр. Добавляйтесь в мою армию!
http://hibernate.minitroopers.com/
Удачи в прокачке!

среда, мая 30, 2012

JDBC Polling Adapter c помощью Apache Camel

В качестве wiki and issue tracking system у нас используется TRAC http://trac.edgewall.org/ Появилась задача мониторинга изменения задач в этой системе. TRAC написан на Python и поддерживает из коробки только один вид нотификации-email.  Активность по тикетам в системе должна выгружаться в xml-файл для обработки другой системой. Идеальная задача для Camel ;)

пятница, марта 30, 2012

Блеск и нищета Apache Camel

В этой статье я расскажу про фееричный фейл Apache Camel , на реальной бизнес-задаче.
Возникла задача по обработке 5000000 zip-файлов (O_o). Каждый файлик необходимо распаковать, достать из архива XML файл, распарсить его, и некоторую информацию дописать в лог в определенном формате.

 Идеальная задача для Apache Camel подумал я и бросился в бой!

Файловый интерфейс для Base64 кодирования/декодирования с помощью Apache Camel

Чем мне нравится Apache Camel, так это готовыми компонентами  конечных точек(endpoints) на все случаи жизни. В моей жизни встретилась задача, по Base64 кодированию/декодированию множества файлов.

Схема работы приложения следующая:
В соответствующие папки будут кидаться файлики, результат будет формироваться в папке output:

c://data/encode
c://data/decode

c://data/output

Идеальная задача для Apache Camel!

четверг, марта 29, 2012

Реализация Webservices с использованием Apache Camel и CXF


В этой статье рассмотрим как можно использовать вебсервисы cxf с использованием Apache Camel в качестве транспорта.
Наш роутер будет работать с сообщением как с JAXB Объктом.
Первым делом создадим Maven-проект на основе camel-archetype-java. У вас должен быть установлен соответствующий плагин для Eclipse

суббота, марта 10, 2012

Используем AspectJ для логирования

Как залогировать свой код так, чтобы не превратить его в лапшу? Оптимально хотелось бы вообще не вносить никаких изменений в бизнес логику. Например у нас есть следующий код. Нам надо логировать входные и выходные данные метода  logic.

package com.bssys.aspect;

public class MainApp {

 private String account;

 public String logic(String account) {
  return "Hello:" + account;
 }
 public static void main(String arg[]) {
  MainApp mainApp = new MainApp();
  String request = "O-o";
  String response = mainApp.logic(request);
 }
}