我是Apache Camel和Blueprint DSL的新手,我正尝试使用jaxb将bean封送至xml,但收到以下异常:


  java.io.IOException:org.apache.camel.NoTypeConversionAvailableException:没有可用的类型转换器将类型:com.test.rqst.InitiateReq转换为所需的类型:java.io.InputStream,值为com.test.rqst.InitiateReq @ 681d07ed


我的blueprint.xml如下

<bean id="testBean2" class="com.test.utility.StopTestDummy" />
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
  <from uri="timer:foo?period=1000&amp;repeatCount=1"/>
  <bean id="testCastor" ref="testBean2"
              method="setDummyValues" />
            <marshal>
                <jaxb prettyPrint="true" contextPath="com.scb.s2b.application.pymt.service.payment.stoppymt.rqst"/>
            </marshal>
   <log message="After Marshalling ${body}"/>
  <to uri="mock:result"/>
</route>
</camelContext>


setDummyValues类中的方法StopTestDummy根据需要创建POJO(InitiateReq)并重现相同的内容。但是我一直在出错。我究竟做错了什么。

非常感谢。

最佳答案

不确定这是问题所在,但请检查一下。

首先,您在编排正确的课程吗?
com.test.rqst.InitiateReq异常,在代码中,您告诉JAXB封送另一个包:<jaxb contextPath="com.scb.s2b.application.pymt.service.payment.stoppymt.rqst"/>

其次,您是否向JAXB讲述了InitiateReq类?
在相同的程序包中创建一个名为jaxb.index的文件,并插入您要编组/解组的类的名称(在您的情况下,只有带有InitiateReq的行)

10-06 07:07