骆驼中的 JaxB 编组
JaxB Marshaling in camel
我是 java 中的 Apache camel 和 Jax b 概念的新手。
我在骆驼队列中有一个 java 对象列表。我想使用 Javs DSL(不使用 spring)将其编组为 xml。
谁能指导我这样做?
我有以下POJO class
public class MyPojo {
private int groupId;
private int memberId;
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;
}}
以下是我实现 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");
我遇到异常(我在 classpath 中为 jaxb 添加了 maven 依赖项)
Failed to create route route4 at: >>> Marshal[org.apache.camel.model.dataformat.JaxbDataFormat@3feb2dda] <<< 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
我已经创建了 jaxb.index 文件(new->来自 eclipse 的文件)。文件内容应为注释class名称
在我们的例子中应该是
MyPojo
它需要放在上下文路径中。在我们的例子中,它应该放在
com.test 位置
注释的 Pojo class 是
@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;
}}
您可以使用带有一些注释的 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;
}}
我是 java 中的 Apache camel 和 Jax b 概念的新手。 我在骆驼队列中有一个 java 对象列表。我想使用 Javs DSL(不使用 spring)将其编组为 xml。 谁能指导我这样做?
我有以下POJO class
public class MyPojo {
private int groupId;
private int memberId;
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;
}}
以下是我实现 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");
我遇到异常(我在 classpath 中为 jaxb 添加了 maven 依赖项)
Failed to create route route4 at: >>> Marshal[org.apache.camel.model.dataformat.JaxbDataFormat@3feb2dda] <<< 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
我已经创建了 jaxb.index 文件(new->来自 eclipse 的文件)。文件内容应为注释class名称
在我们的例子中应该是 MyPojo
它需要放在上下文路径中。在我们的例子中,它应该放在 com.test 位置
注释的 Pojo class 是
@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;
}}
您可以使用带有一些注释的 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;
}}