I'm getting the exception below when using the HL7 component and codec with mina to receive streamed HL7 messages. The program works find when I send it separate messages from a 2nd program using Camel/HL7/Mina and receives an ACK successfully. But when testing with our client we're seeing this exception.
The HL7 hex appears to be valid when I reviewed it. It contains the special characters for MLLP in the message: 0x0b (11 decimal) = start marker 0x0d (13 decimal = the \r char) = segment terminators 0x1c (28 decimal) = end 1 marker 0x0d (13 decimal) = end 2 marker Do I need to set a decoderMaxLineLength like the textline codec? Or am I'm missing something else? The only difference I can think of is the client test includes the special characters listed above. And it may be a continuous stream instead of separate messages like my own test program sent successfully. Appreciate any help to resolve this issue. 2013-01-25 18:52:08,831 WARN Camel (camel-1) thread #124 - MinaThreadPool org.apache.camel.component.mina.MinaConsumer$ReceiveHandler - [/209.149.112.25:7899] EXCEPTION: org.apache.mina.filter.codec.ProtocolDecoderException: org.apache.mina.common.BufferDataException: dataLength: 189616968 (Hexdump: 0B 4D 53 48 <...HL7 HEX REMOVED FOR BREVITY...> 0D 1C 0D) at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:165) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648) at org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293) at org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:228) at org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:198) at org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:45) at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:485) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) Caused by: org.apache.mina.common.BufferDataException: dataLength: 189616968 at org.apache.mina.common.ByteBuffer.prefixedDataAvailable(ByteBuffer.java:1631) at org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:88) at org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133) at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:158) ... 14 more 2013-01-25 18:52:08,832 DEBUG Camel (camel-1) thread #124 - MinaThreadPool org.apache.camel.component.mina.MinaConsumer - Closing session as an exception was thrown from MINA 2013-01-25 18:52:08,832 INFO Camel (camel-1) thread #124 - MinaThreadPool org.apache.camel.component.mina.MinaConsumer$ReceiveHandler - [/209.149.112.25:7899] CLOSE Maven dependencies and version: camel-core 2.10.3 camel-hl7 2.10.3 camel-mina 2.10.3 camel-jms 2.10.3 camel-spring 2.10.3 activemq-camel 5.7.0 activemq-pool 5.7.0 xbean-spring 3.12 hapi-structures-v24 1.2 slf4j-log4j12 1.6.6 CAMEL ROUTE: // create CamelContext with HL7 codec registered SimpleRegistry registry = new SimpleRegistry(); registry.put("hl7codec", new HL7MLLPCodec()); CamelContext inContext = new DefaultCamelContext(registry); // set up activemq jms ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"); // add jms queue to camel context inContext.addComponent("hl7-jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory)); // add our route to the CamelContext try { inContext.addRoutes(new RouteBuilder() { public void configure() { getContext().setHandleFault(true); onException(Exception.class).continued(true); // route from mina endpoint to jms component from("mina:tcp://" + hl7Ip + ":" + hl7Port + "?sync=true&minaLogger=" + minaLogger) .to("hl7-jms:queue:hl7"); // route from jms component to hl7 message handling bean from("hl7-jms:queue:hl7") .unmarshal() .hl7(true) // route based on HL7 version to HL7BusinessLogic endpoint to transform the HL7 message object .choice() .when(header("CamelHL7VersionId").isEqualTo("2.4")) .to("bean:com.eagleriversolutions.app.erspoc.hl7v2.ProcessHl7V24Message?method=transformHl7Message") .end() // send ACK/ NAK to HL7 sender .marshal() .hl7(true); } }); // start the route and let it do its work inContext.start(); -- View this message in context: http://camel.465427.n5.nabble.com/HL7-Mina-throwing-org-apache-mina-filter-codec-ProtocolDecoderException-org-apache-mina-common-Buffen-tp5726292.html Sent from the Camel - Users mailing list archive at Nabble.com.