示例:
to("xslt:mapping.xsl?saxon=true&transformerCacheSize=5")
当我使用Saxon时,我会在整个地方设置这个属性。为它们设置String常量或创建我自己的xslt
端点似乎不是正确的方法。
我可以为所有xslt
个端点设置这些属性吗?
答案 0 :(得分:0)
如果配置始终相同,您可以声明直接端点来处理所有请求。
from("direct:my-xslt")
.to("xslt:mapping.xsl?saxon=true&transformerCacheSize=5")
然后从其他路线开始:
.to("direct:my-xslt")
直接端点在同一个线程中运行,所以它只是一种隔离执行特定工作的路由部分的方法。
如果您需要在适用于所有路线的xslt之前/之后进行任何类型的转换/记录,那么您可以直接在直接路线中进行转换。
答案 1 :(得分:0)
您可以通过订阅CamelContext startupListener
并设置XsltEndpoints
'来配置它。参数(请注意,因为以下示例确实设置了每个XsltEndpoint
端点的saxon
和transformerCacheSize
属性。示例(ctx是CamelContext的一个实例):
ctx.addStartupListener((ctx, alreadyStarted) -> {
ctx.getEndpoints().forEach(e -> {
if(e instanceof XsltEndpoint) {
((XsltEndpoint) e).setTransformerCacheSize(5);
((XsltEndpoint) e).setSaxon(true);
}
});
});
如果是Spring Boot saxon=true
,可以使用application.properties
文件(XsltComponentConfiguration)进行配置。 AFAIK无法从属性文件配置transformerCacheSize
,因为它是XsltEndpoint
的参数。
# application.properties
camel.component.xslt.saxon = true