В этом посте я собираюсь показать различные способы разработки веб-приложения Camel, работающего в JBoss EAP.
- Spring Framework
- CDI с Java DSL
- XML без весны
Для ясности и простоты я буду использовать один и тот же верблюжий маршрут для всех трех разных методов. Этот верблюжий маршрут запускает таймер, который будет регистрироваться каждые 5 секунд.
Прежде чем мы начнем разрабатывать наш простой верблюжий маршрут, нам нужен базовый WAR-проект для работы, поэтому сначала нам нужно создать WAR-файл. Я уверен, что у вас должен быть миллион способ создать это, у каждого есть своя лучшая практика для этого. Для меня в этом примере я создам один с Maven, используя артефакт webapp-javaee6.
A. Создать проект, выбрать Maven Project.
Б. Нажмите «Далее», когда вы находитесь в проекте New Maven, и вы перейдете к следующему шагу, выберите артефакт webapp-javaee6.
C. Добавьте имя своего проекта и нажмите «Далее», у вас будет готовый WAR-проект в вашей JBoss Developer Studio. (Обратите внимание, что для моих примеров позже я собираюсь дать им разные названия проектов).
D. Добавьте зависимость от Camel в файл pom.xml ( убедитесь, что репозиторий Maven настроен правильно, указывая на http://repo.fusesource.com/nexus/content/repositories/releases )
<!-- camel -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.15.1.redhat-621xxx</version>
<scope>provided</scope>
</dependency>
E. Необязательно, измените свою версию JDK соответственно в pom.xml проекта WAR.
Java DSL
Основное различие между Karaf и JBoss EAP заключается в том, что JBoss EAP поддерживает спецификацию JavaEE. Начиная с JavaEE 6, он представляет новую инфраструктуру, внедрение контекстов и зависимостей, подобное тому, что сделал Spring, позволяет пользователям определять безопасное внедрение зависимостей, а также обеспечивает хорошо управляемый жизненный цикл «контекстных» ссылок для Java-бинов. Во многих случаях мы хотим воспользоваться этим стандартом и позволить ему управлять нашим компонентом в Camel. Чтобы искать эти компоненты в маршруте Camel, нам нужно использовать Java DSL.
Прежде чем мы начнем, нам понадобится еще одна зависимость от верблюда,
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cdi</artifactId>
<version>2.15.1.redhat-620133</version>
<scope>provided</scope>
</dependency>
Включите CDI в своем веб-приложении, поместив пустой файл beans.xml в WEB-INF в папке веб-приложения. Создайте папку WEB-INF и файл XML beans.xml
Вот как должен выглядеть ваш beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all">
</beans>
Теперь я собираюсь показать вам, как его создать, создать Java-класс, расширяющий org.apache.camel.builder.RouteBuilder , который называется MyCamelRouteBuilder.java.
Внутри метода добавьте следующий верблюжий маршрут,
from("timer:mytimer?period=5000")
.log("Java DSL Camel Demo");
Добавьте свой верблюжий маршрут в область приложения, зарегистрируйте его контекст и запустите, установив следующую аннотацию поверх вашего класса.
- @Запускать
- @ApplicationScoped
- @ContextName ( «КДИ-контекст»)
Ваш класс Java будет выглядеть так:
package com.redhat.mycdidemo;
import org.apache.camel.builder.RouteBuilder;
@Startup
@ApplicationScoped
@ContextName("cdi-context")
public class MyCamelRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:mytimer?period=5000")
.log("Java DSL Camel Demo");
}
}
И тогда мы готовы, готовы к работе. Запустите mvn clean install для генерации файла войны.
Запустите JBoss EAP с включенной подсистемой Fuse. Если вы не уверены, как это сделать, посмотрите этот пост. В боковой папке bin запустите JBoss EAP с
- standalone.sh
- standalone.bat
Зайдите на http: // localhost: 9990 /, войдите в консоль администратора, в Runtime /
Нажмите Add, выберите войну, сгенерированную в целевой папке проекта. Нажмите Далее, Далее, чтобы развернуть приложение.
Запустите приложение, нажав на кнопку En / Disable.
Переключитесь на журнал, вы увидите, что теперь он печатает сообщение «Java DSL Camel Demo» каждые 5 секунд.