我们有一个 Spring Integration 应用程序,它使用 JDBC 轮询器和 RowMapper 从数据库中读取并输出域对象的集合(假设结果集返回多行)。
然后将域对象编组为 XML。当使用 Castor 作为编组器时,这可以正常工作,并且 XML 表示域对象的集合:
<array-list>
<order>
<orderID>23940210</orderID>
...
</order>
<order>
...
</array-list>
我们现在希望从 Castor 切换到 JAXB。这是 XML 中 JAXB 编组器的定义:
<oxm:jaxb2-marshaller id="jaxbMarshallerBean">
<oxm:class-to-be-bound name="com.mycompany.Order" />
</oxm:jaxb2-marshaller>
... JAXB 编组器用作 Spring 集成链中使用的转换器 ..
<int:chain input-channel="input" output-channel="output-jms">
<si-xml:marshalling-transformer id="defaultMarshaller" marshaller="jaxbMarshallerBean" />
</int:chain>
当然域类是注释的:
@XmlRootElement(namespace ="Order")
public class Order{
...
@XmlElement(name="OrderID")
public String getOrderId() {
return orderId;
}
现在,抛出以下异常:
org.springframework.oxm.UncategorizedMappingException:
Unknown JAXB exception;
nested exception is javax.xml.bind.JAXBException:
class java.util.ArrayList nor any of its super class is known to this context.
看起来 JAXB 不喜欢它正在处理域对象的集合这一事实。配置或处理此问题的正确方法是什么?
非常感谢