Статьи

Red Hat JBoss Fuse: 3 способа разработки приложения Fuse в JBoss EAP, Java DSL

В этом посте я собираюсь показать различные способы разработки веб-приложения 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 секунд.

Название изображения