尝试添加杰克逊库时获取 BeanCreationException [英] Get BeanCreationException when try to add Jackson Library

查看:37
本文介绍了尝试添加杰克逊库时获取 BeanCreationException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的 Hello World 示例,它将 Map 传递给 Camel,并通过 Log4J 将值显示到控制台.我想通过将 Jackson 库添加到我的 Camel applicationContext.xml 来扩展此示例以在 JSON 中呈现此地图

I have a simple Hello World example that passes a Map to Camel and displays the values to the console via Log4J. I want to expand this example to render this map in JSON by adding the Jackson library to my Camel applicationContext.xml

首先我尝试将以下 XML 标记添加到我的 applicationContext.xml(如在http://camel.apache.org/json.html 在在 Spring DSL 中使用 JSON"下)

First I tried adding the following XML tags to my applicationContext.xml (as specified at http://camel.apache.org/json.html under "Using JSON in Spring DSL")

<camel:dataFormats>
    <camel:json id="jack" library="Jackson"/>
</camel:dataFormats>

但是当我将它添加到我的 applicationContext.xml 并运行我的 Java 代码时,我收到以下 XmlBeanDefinitionStoreException 消息:

But when I add this to my applicationContext.xml, and run my Java code I get the following XmlBeanDefinitionStoreException message:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'dataFormats'.     One of '{"http://camel.apache.org/schema/
 spring":route}' is expected. 

在我的 camelContext 内部或外部移动这些标签会产生相同的错误(在 camelContext 内部时只是一个更长的 URL 列表).

Moving these tags inside or outside of my camelContext yields the same error (just a longer list of URLs when inside the camelContext).

我还需要在我的 ApplicationContext.xml 中指定其他内容吗?

Is there something else I need to specify in my ApplicationContext.xml?

这是我当前的 applicationContext.xml:

Here is my current applicationContext.xml:

更新:以下 xml 现在可以使用.不得不移动 dataFormats XML 标记的位置.

UPDATED: The following xml now works. Had to move the location of the dataFormats XML tags.

<?xml version="1.0" encoding="UTF-8"?> 
<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:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<bean
    class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
<context:component-scan base-package="sample" />
<context:annotation-config />

<camel:camelContext id="HelloWorldContext">

<camel:dataFormats>
  <camel:json id="jack" library="Jackson"/>
</camel:dataFormats>

<camel:route>

     <camel:from
          uri="timer://hello.world.request.timer?fixedRate=true&amp;period=10000" />
     <camel:to uri="log:hello.world.request?level=INFO?showAll=true" />
     <camel:bean ref="helloWorld" />
     <camel:to uri="log:hello.world.response?level=INFO?showAll=true" />
</camel:route>

</camel:camelContext>

<bean id="jms" class="org.apache.activemq.camel.component.ActiveMQComponent">
   <property name="configuration" ref="jmsConfig" />
</bean>

<bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
  <property name="connectionFactory" ref="jmsConnectionFactory" />
  <property name="transacted" value="false" />
  <property name="concurrentConsumers" value="1" />
</bean>

<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
  <property name="brokerURL" value="vm://localhost" />
  <property name="redeliveryPolicy" ref="redeliveryPolicy" />
  <property name="prefetchPolicy" ref="prefetchPolicy" />
</bean>

<bean id="prefetchPolicy" class="org.apache.activemq.ActiveMQPrefetchPolicy">
  <property name="queuePrefetch" value="5" />
</bean>

<bean id="redeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy">
  <property name="maximumRedeliveries" value="1" />
  <property name="backOffMultiplier" value="2" />
  <property name="initialRedeliveryDelay" value="2000" />
  <property name="useExponentialBackOff" value="true" />
</bean>

</beans>

推荐答案

dateFormatsjson 元素是 camel 命名空间的一部分.您需要指定

The dateFormats and json elements are part of the camel namespace. You need to specify that

<camel:dataFormats>
    <camel:json id="jack" library="Jackson"/>
</camel:dataFormats>

这篇关于尝试添加杰克逊库时获取 BeanCreationException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆