我用camel定义了一个处理器,它允许我使用计时器生成一个jaxb-javabean,并将pojo写入xml文件。但当我启动应用程序时,我遇到了以下错误:
08:09:00 WARN[or.ap.ca.co.ti.时间消费者](骆驼(骆驼-1)线程#2-定时器://生成发票)错误处理交换。交换[20E715FDB7EFE19-0000000000000000]。由:[java.io.IOEx
我的代码如下:
from("timer:generateInvoice?period={{xml.timer.period}}&delay={{xml.timer.delay}}")
.log("Generating randomized invoice XML data")
.process("invoiceGenerator")
.marshal(jaxbDataFormat)
.to("file:{{xml.location}}");
发电机波纹管:
@Override
public void process(Exchange exchange) throws Exception {
Random random = new Random();
List<Invoice> invoices = new LinkedList<>();
for (int i = 0; i < 100; i++) {
String invoiceNumber = String.format("invoice-%d", random.nextInt());
Invoice invoice = new Invoice();
invoice.setInvoiceNumber(invoiceNumber);
invoice.setAmount(random.nextDouble());
Instant now = Instant.now();
GregorianCalendar cal1 = new GregorianCalendar();
cal1.setTimeInMillis(now.toEpochMilli());
invoice.setInsertionDate(DatatypeFactory.newInstance().newXMLGregorianCalendar());
invoice.setInvoiceType(INVOICE_TYPE[random.nextInt(INVOICE_TYPE.length)]);
invoices.add(invoice);
}
exchange.getMessage().setBody(invoices);
}
我已经尝试将java.util.LinkedList的转换器实现为所需的类型:java.io.InputStream
跟:
@Converter
public InputStream ListToInputStream(List<Invoice> invoices) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ByteArrayInputStream bios = null;
try {
ObjectFactory objFactory = new ObjectFactory();
JAXBContext jaxbContext = JAXBContext.newInstance("com.webinage.model");
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
for(Invoice invoice : invoices) {
marshaller.marshal(invoice, baos);
}
bios = new ByteArrayInputStream(new byte[baos.size()]);
bios.read(baos.toByteArray());
} catch (Exception e) {
e.printStackTrace();
} finally {
baos.close();
}
return bios;
}
但是同样的例外出现了…你有什么想法吗?
很可能列表不是您想要放入交易所的内容。我假设您希望输出 XML 如下所示:
<Invoices>
<Invoice>...</Invoice>
<Invoice>...</Invoice>
...
</Invoices>
在这种情况下,声明一个容器类可能是最简单的:
@XmlRootElement
public class Invoices {
private List<Invoice> invoices;
}
(省略getter和setter)。
然后生成您的模式,并将这个< code>Invoices对象放入交换中。
我首先有一个多部分文件,我想把它发送到camel管道,并用原始名称保存这个文件。 我的代码: 另一方面,我有: from(“seda:rest_upload”).convertBodyTo(File.class).to(“file://rest_files"); 我也尝试注册转换器: 当我执行我的代码时,我看到下面的stacktrace: 如何解决这个问题?
我是阿帕奇骆驼的新手。我正在使用带有Apache Camel和Spring Boot集成的REST API。我已完成获取请求,它按预期工作。但是,在使用 POST 调用发布数据时,我遇到了一个问题。 我在下面的链接中看到了类似的错误。但是,这对我没有帮助。NoTypeConversionAvailableException:没有可从类型转换的类型转换器: 我已经尝试了Stackoverflow,y
我想生成一个方法,将对象转换为映射字符串,然后再从映射字符串返回到对象。 我按如下方式生成初始对象: 然后,以下方法将给定的映射[字符串,\u]转换为对象: 在下面的方法中,我将初始的转换为,然后返回(通过调用上面的方法): 所以如果我打电话: 输入和输出将匹配。 问题,尝试更进一步,我现在想对类型为名称的字段执行相同的操作。但我希望这一步骤是通用的,因为在不知道字段名称的类型的情况下,我可以将其
问题内容: 还有其他一些SO问题在讨论可以使用Eclipse的编译器而不是javac进行泛型编译的问题(即Java:泛型在Eclipse和javac中处理不同,而泛型可以在Eclipse中编译和运行,但不能在javac中编译)-但这看起来就像一个稍微不同的人。 我有一堂课: 我还有一个带有方法的类,该方法接受来自以下类型的任意对象: 这在Eclipse中可以正常工作,但是当我使用进行了干净的构建时
在其他地方,我需要从中的内容创建一个。所以,我这样做: 此外,在这里使用进行一些转换,以便每次都用每一个小东西清理它,一方面为我提供编译时保证和安全性,但这在大多数情况下是一个大麻烦。有没有一些短手来绕过这些情况?