public class ConverterRoute implements RoutesBuilder {
public void addRoutesToCamelContext(CamelContext context) throws Exception {
Tracer tracer = new Tracer();
tracer.setTraceOutExchanges(true);
// we configure the default trace formatter where we can
// specify which fields we want in the output
DefaultTraceFormatter formatter = new DefaultTraceFormatter();
formatter.setShowOutBody(true);
formatter.setShowOutBodyType(true);
// set to use our formatter
tracer.setFormatter(formatter);
context.addInterceptStrategy(tracer);
context.addRoutes(new RouteBuilder() {
public void configure() {
try {
DataFormat bindy = new BindyCsvDataFormat(com.dto.EmployeeDTO.class);
from("file://TEST?fileName=Employee.csv").
unmarshal(bindy).
marshal().
xstream().
to("file://TESTOUT?fileName=EmployeeXML.xml");
/*DataFormat bindy = new BindyCsvDataFormat(com.dto.EmployeeDTO.class);
from("F://Employee.csv").
unmarshal(bindy).
marshal().
xstream().
to("F://EmployeeXML.xml");*/
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public static void main(String[] args) {
try{
CamelContext context = new DefaultCamelContext();
ConverterRoute route = new ConverterRoute();
System.out.println("Starting........");
route.addRoutesToCamelContext(context);
context.start();
Thread.sleep(5000);
System.out.println("Ending........");
context.stop();
}catch(Exception exe){
exe.printStackTrace();
}
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@CsvRecord(separator = ",", skipFirstLine = true)
public class EmployeeDTO implements Serializable{
@XmlAttribute
@DataField(pos = 1)
private int employeeId;
@XmlAttribute
@DataField(pos = 2)
private String firstName;
@XmlAttribute
@DataField(pos = 3)
private String lastName;
@XmlAttribute
@DataField(pos = 4)
private String role;
}
我收到了以下错误:
启动........
log4j:WARN找不到logger(org.apache.camel.impl.DefaultCamelContext)的appender。 log4j:WARN请正确初始化log4j系统 结束........
在欲望文件夹中没有生成转换后的xml。
答案 0 :(得分:0)
首先,WARNING表示类路径中没有log4j配置文件。尝试添加一个名为" log4j.properties"的文件。在资源目录中包含以下内容:
log4j.rootLogger=INFO, out
# uncomment the following line to turn on Camel debugging
log4j.logger.org.apache.camel=INFO
log4j.logger.org.apache.camel.component.mongodb=DEBUG
log4j.logger.org.springframework=WARN
log4j.appender.out=org.apache.log4j.ConsoleAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n
通过以上操作,您将获得IDE中的日志,并可以查看正在进行的操作。
最后,您可以使用JAXB而不是XTREAM。您唯一需要做的就是使用JAXB注释注释EmployeeDTO。