2017-07-03 109 views
0

我是新来的Apache骆驼和爪哇B概念在Java中。 我有一个骆驼队列中的java对象列表。我想用Javs DSL将它Marshall到一个xml(不使用spring)。 任何人都可以指导我这样做吗?JaxB骆驼编队

我有以下POJO类

​​

下面是JAXB实现我的骆驼代码

JaxbDataFormat jaxbMarshal = new JaxbDataFormat(); 
    jaxbMarshal.setContextPath("com.test"); 
    jaxbMarshal.setPartClass("com.test.MyPojo"); 

from("direct:javaObjects") //this direct having the list of MYPojo Objects 
    .marshal(jaxbMarshal) 
    .to("src/output"); 

我得到异常以下(我加了Maven的依赖在类路径JAXB)

Failed to create route route4 at: >>> Marshal[[email protected]] <<< in route: Route(route4)[[From[direct:javaObjects]] -> [Marshal[org.apa... 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 
+0

你有camel-jaxb组件在应用程序类路径中的依赖关系? –

+0

是的,您需要将camel-jaxb添加到类路径中,并将JAXB注释添加到POJO类中,并添加'jaxb.in​​dex'文件。您可以在互联网上搜索“jaxb.in​​dex”文件。 –

+0

谢谢@ClausIbsen。我已经注册并且工作正常 – Hari

回答

0

我已经创建了jaxb.in​​dex文件(new-> eclipse中的File)。该文件的内容应该是注释类名

在我们的情况下,它应该是 MyPojo

及其需要被放置在上下文路径。在我们的情况下,它应该被放置在 com.test位置

和注释的POJO类是

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement 
public class MyPojo { 
@XmlElement 
private int groupId; 
@XmlElement 
private int memberId; 
@XmlElement 
private String details; 
public int getgroupId() { 
    return groupId; 
} 
public void setgroupId(int groupId) { 
    this.groupId = groupId; 
} 
public int getMemberId() { 
    return memberId; 
} 
public void setMemberId(int memberId) { 
    this.memberId = memberId; 
} 
public String getdetails() { 
    return details; 
} 
public void setdetails(String details) { 
    this.details = details; 
}} 
0

您可以使用POJO一些注释:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name="MY-POJO") 
@XmlType(propOrder = {"groupId", "memberId", "details"}) 
public class MyPojo { 
@XmlElement(name = "groupId") 
private int groupId; 
@XmlElement(name = "memberId") 
private int memberId; 
@XmlElement(name = "details") 
private String details; 
public int getgroupId() { 
    return groupId; 
} 
public void setgroupId(int groupId) { 
    this.groupId = groupId; 
} 
public int getMemberId() { 
    return memberId; 
} 
public void setMemberId(int memberId) { 
    this.memberId = memberId; 
} 
public String getdetails() { 
    return details; 
} 
public void setdetails(String details) { 
    this.details = details; 
}}