У меня проблема с использованием xquery в сообщении JMS с использованием верблюда apache и wildfly.фильтр jms сообщение с xquery, используя apache camel wildfly
Мой код считывает данные из очереди JMS и попытаться отфильтровывать сообщения
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.cdi.ContextName;
import org.apache.camel.component.jms.JmsComponent;
import org.wildfly.extension.camel.CamelAware;
import javax.annotation.Resource;
import javax.ejb.Startup;
import javax.enterprise.context.ApplicationScoped;
import javax.jms.ConnectionFactory;
@Startup
@CamelAware
@ApplicationScoped
@ContextName("test")
class MyRouteBuilder extends RouteBuilder {
@Resource(mappedName = "java:jboss/DefaultJMSConnectionFactory")
private ConnectionFactory connectionFactory;
@Override
public void configure() throws Exception {
getContext().addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
from("jms:queue:test1").
routeId("test").
to("log:jms?showAll=true").
filter().xquery("fn:contains(//person/name/text(),'james')").
to("file://Users/asse/Outbound");
Когда я запускаю код с сообщением <person><name>james</name><person>
я получаю ошибку:
Message History --------------------------------------------------------------------------------------------------------------------------------------- RouteId ProcessorId Processor
Elapsed (ms) [test ] [test ] [jms://queue:test1
] [ 5] [test ] [to7 ] [log:jms?showAll=true
] [ 1] [test ] [filter7 ] [filter[xquery{XQuery[[email protected]]}] ] [ 2]Stacktrace ---------------------------------------------------------------------------------------------------------------------------------------: org.apache.camel.RuntimeExpressionException: java.lang.NullPointerException: External object cannot wrap a Java null at org.apache.camel.component.xquery.XQueryBuilder.matches(XQueryBuilder.java:220) at org.apache.camel.processor.FilterProcessor.matches(FilterProcessor.java:65) at org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:51) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:542) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
я не делаю понять почему! Может ли кто-нибудь помочь мне с этой проблемой?
Приведенный выше код работает для wildfly 9.0.2 финал с wildfly-camel-patch-3.3.0, но не с wildfly 10.1.0 final и wildfly-camel-patch 4.3.0 и 4.4.0. Код также работает во всех версиях, если сообщение поступает из конечной точки файла. – anpt