2017-07-03 129 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; 
}}