Почему мое приложение Java DSL Camel не работает на JBoss Fuse? - PullRequest
0 голосов
/ 18 мая 2018

Не могли бы вы помочь мне выяснить, что не так с моим приложением?Он находится в состоянии «Разрешено», как только я опубликую его в JBoss Fuse.

Я сделал простой парсер .csv, используя платформу Apache Camel.Я использую .marshal () / unmarshal (). Csv () для анализа файла.

Я развертываю его в OSGi и запускаю сервер JBoss Fuse и это приложение в разрешенном состоянии вместо активного.Но если я исключу синтаксический анализ, он будет работать с ClassCastExceptions, но, по крайней мере, он будет в активном состоянии.Поэтому кажется, что OSGi не может разрешить сортировку, но я установил функцию: camel-csv.

public final class MyRouteBuilder extends RouteBuilder {

    @Override
    public void configure(){
        from("file:/../?fileName=..")
                .unmarshal()
                .csv()
                .process(exchange ->
                        {
                            List<List<String>> data = (List<List<String>>) exchange.getIn().getBody();
                            List<List<String>> newData = new ArrayList<>();
                            data.forEach(line -> {
                                List<String> newLine = chosenColumns
                                        .stream()
                                        .map(line::get)
                                        .collect(Collectors.toList());
                                newData.add(newLine);
                            });
                            log.info(newData.toString());
                            exchange.getIn().setBody(newData);
                        }
                )
                .marshal()
                .csv()
                .convertBodyTo(String.class)
                .to("file:/../?fileName=..");
    }
}

Приведенный выше код представляет маршрутизатор.Не могли бы вы помочь мне с этим?

Кстати, приложение запускается через Activator, а Maven содержит следующие зависимости:

<dependencies>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-core</artifactId>
        <version>2.12.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-csv</artifactId>
        <version>2.12.4</version>
    </dependency>
    <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.core</artifactId>
        <version>4.3.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.3.7</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Import-Package>*</Import-Package>
                    <Bundle-Activator>com.sample.Activator</Bundle-Activator>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>

И в журнале: tail я вижу следующее:

org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> Unmarshal[org.apache.camel.model.dataformat.CsvDataFormat@6be36954] <<< in route: Route(route1)[[From[file://C:/Users/Pavel_Polubentcev/Downlo... because of Data format 'csv' could not be created. Ensure that the data format is valid and the associated Camel component is present on the classpath
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1072)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196)
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:974)
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3301)
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3024)
    at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2854)
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2850)
    at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2873)
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2850)
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2819)
    at com.packt.camel.chapter3.Activator.start(Activator.java:18)
    at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:2154)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2072)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Data format 'csv' could not be created. Ensure that the data format is valid and the associated Camel component is present on the classpath
    at org.apache.camel.model.DataFormatDefinition.getDataFormat(DataFormatDefinition.java:107)
    at org.apache.camel.model.DataFormatDefinition.getDataFormat(DataFormatDefinition.java:88)
    at org.apache.camel.model.UnmarshalDefinition.createProcessor(UnmarshalDefinition.java:181)
    at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:534)
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:495)
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:219)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1069)
    ... 18 more

Но функция camel-csv установлена, и camel-csv представлен в pom.

...