Проблема с Apache camel jaxb marshalling

246
03 августа 2017, 23:13

Добрый день. Читаю Camel in Action, там есть пример маршаллинга в xml с помощью jaxb Spring XML. Пробую делать как в книге, но выдает ошибку. Через Java DSL работает. Подскажите, в чем может быть причина. Спасибо.

спринг-конфиг:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xmlns:amq="http://activemq.apache.org/schema/core"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://camel.apache.org/schema/spring
       http://camel.apache.org/schema/spring/camel-spring.xsd
       http://activemq.apache.org/schema/core
       http://activemq.apache.org/schema/core/activemq-core.xsd">
    <context:component-scan base-package="main"/>
    <bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
        <property name="connectionFactory">
            <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                <property name="brokerURL" value="vm://localhost"/>
             </bean>
        </property>
    </bean>
    <camel:camelContext xmlns="http://camel.apache.org/schema/spring">
        <dataFormats>
            <jaxb id="jaxb" contextPath="main"/>
        </dataFormats>
        <route>
            <from uri="direct:start"/>
            <marshal ref="jaxb"/>
            <to uri="jms:order"/>
        </route>
    </camel:camelContext>
</beans>

объект для маршаллинга:

package main;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class JaxbTest {
    @XmlAttribute
    private final String name = "JaxbTest";
}

мэйн класс:

package main;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
    public static void main(String[] args) {
        ApplicationContext springContext = new ClassPathXmlApplicationContext("spring-config.xml");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
  }
}

стектрейс:

Exception in thread "main" org.apache.camel.RuntimeCamelException: org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> Marshal[ref:jaxb] <<< in route: Route(route1)[[From[direct:start]] -> [Marshal[ref:jaxb], To... because of Data format 'jaxb' 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.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1774)
    at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:138)
    at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:361)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at main.App.main(App.java:9)
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> Marshal[ref:jaxb] <<< in route: Route(route1)[[From[direct:start]] -> [Marshal[ref:jaxb], To... because of Data format 'jaxb' 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:1298)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:204)
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:1087)
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3540)
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3271)
    at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:202)
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3089)
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3085)
    at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3108)
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3085)
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3022)
    at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:275)
    at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:136)
    ... 10 more
Caused by: java.lang.IllegalArgumentException: Data format 'jaxb' 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:119)
    at org.apache.camel.model.DataFormatDefinition.getDataFormat(DataFormatDefinition.java:81)
    at org.apache.camel.model.MarshalDefinition.createProcessor(MarshalDefinition.java:179)
    at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:549)
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:510)
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:226)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1295)
    ... 23 more
Process finished with exit code 1
READ ALSO
Django - 500 Internal Server Error в ajax post request

Django - 500 Internal Server Error в ajax post request

Всем доброго времени суток

274
Carousel bootstrap c fade-эффектом

Carousel bootstrap c fade-эффектом

Здравствуйте! Нашел в сети только один пример нормально работающей bootstrap карусели с эффектом fadeАвтор предлагает решить его с помощью css-файла...

267
Не загружается файл в php

Не загружается файл в php

Всем приветПомогите с проблемой

233
Передача методом post значения checkbox-a

Передача методом post значения checkbox-a

ЗдравствуйтеСижу, туплю над казалось бы простейшей задачей

231