You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "daniel golesny (innoWake gmbh)" <da...@innowake.de> on 2007/08/01 08:57:20 UTC

mina and camel

Hi,

I want to integrate a socket based application which is sending xml
data. The data should be routed by analysing the content.
I may not change to current protocol.

I tried Camel that is very good for routing, but I couldn't find a way
to open a socket.
With Mina I could open a socket, so I tried to use Mina and Camel by the
MinaComponent with this uri mina:tcp://127.0.0.1:22345

But on sending some bytes (does not matter if "abc" or valid xml) I get
an exception on deserializing. I can't find any example with mina and
camel, can someone send me an example with camel and mina? Or is this
the wrong way for routing data over raw socket?


Version:
Camel 1.0.0

------------------ exception on sending bytes ---------
WARNUNG: [/127.0.0.1:1294] EXCEPTION, please implement
org.apache.camel.component.mina.MinaConsumer$1.exceptionCaught() for
proper handling:
org.apache.mina.filter.codec.ProtocolDecoderException:
org.apache.mina.common.BufferDataException: dataLength: 1010792557
(Hexdump: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 2E 30 22 20 65
6E 63 6F 64 69 6E 67 3D 22 49 53 4F 2D 38 38 35 39 2D 31 22 3F 3E 0D 0A
3C 72 6F 75 74 65 54 6F 3E 41 3C 2F 72 6F 75 74 65 54 6F 3E 0D 0A)
	at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Protoco
lCodecFilter.java:161)
	at
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageRece
ived(AbstractIoFilterChain.java:298)
	at
org.apache.mina.common.support.AbstractIoFilterChain.access$5(AbstractIo
FilterChain.java:295)
	at
org.apache.mina.common.support.AbstractIoFilterChain$1.messageReceived(A
bstractIoFilterChain.java:646)
	at
org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilt
er.java:220)
	at
org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run
(ExecutorFilter.java:267)
	at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
.runTask(ThreadPoolExecutor.java:665)
	at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
.run(ThreadPoolExecutor.java:690)
	at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.mina.common.BufferDataException: dataLength:
1010792557
	at
org.apache.mina.common.ByteBuffer.prefixedDataAvailable(ByteBuffer.java:
1571)
	at
org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.do
Decode(ObjectSerializationDecoder.java:88)
	at
org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(Cumulative
ProtocolDecoder.java:133)
	at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Protoco
lCodecFilter.java:154)
	... 8 more

-------------- Server -----------------
CamelContext context=new DefaultCamelContext();
// server component
MinaComponent inComponent = new MinaComponent();
context.addComponent("in", inComponent);	
final Endpoint inEndpoint = context.getEndpoint(ENDPOINT_INCOMING);
// Route BUilder
context.addRoutes(new RouteBuilder(){
         public void configure() {
	FromBuilder from = from(inEndpoint);				
	from.to("file://testA");
	from("file://testA").process(new Processor(){
		public void process(Exchange e){
			System.out.println("Received exchange for
file://test: "+e.getIn().getMessageId());
		}
	});
         }
});
		
System.out.println("Starting Context");
context.start();

------------- Client ----------------
Socket theSocket = new Socket("127.0.0.1", MinaServerTest1.PORT);
PrintWriter out = new PrintWriter(theSocket.getOutputStream(), false);

out.println("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
out.println("<routeTo>A</routeTo>");
out.flush();
out.close();




Re: mina and camel

Posted by Gaston Dombiak <ga...@jivesoftware.com>.
Hey guys,

I'm not sure what you are looking for but if you are looking for a scalable solution (i.e. that use MINA) and that is responsible for routing XML packets then you may want to look at Openfire (http://www.igniterealtime.org). Openfire is an XMPP server that uses MINA.

Regards,

  -- Gato

----- Original Message -----
From: "mat" <fo...@gmail.com>
To: dev@mina.apache.org
Sent: Wednesday, August 1, 2007 10:03:06 AM (GMT-0300) America/Argentina/Buenos_Aires
Subject: Re: mina and camel

First of all, I don't know how to answer your question. Sorry. However,
after I google "Camel", it seems exactly what I wanted. A routing
component could be used along with Mina server as a message router. My
original purpose is to build a server framework which is not depentent on
any protocols(http, row rocket, web service, db access)(kinda like a Mule).
I believe Mina + Camel can make building this system possible.

I also found this:

Apache Camel can be used as a routing and mediation engine for the following
projects:

Apache mina a networking framework
On 8/1/07, daniel golesny (innoWake gmbh) <da...@innowake.de>
wrote:
>
> Hi,
>
> I want to integrate a socket based application which is sending xml
> data. The data should be routed by analysing the content.
> I may not change to current protocol.
>
> I tried Camel that is very good for routing, but I couldn't find a way
> to open a socket.
> With Mina I could open a socket, so I tried to use Mina and Camel by the
> MinaComponent with this uri mina:tcp://127.0.0.1:22345
>
> But on sending some bytes (does not matter if "abc" or valid xml) I get
> an exception on deserializing. I can't find any example with mina and
> camel, can someone send me an example with camel and mina? Or is this
> the wrong way for routing data over raw socket?
>
>
> Version:
> Camel 1.0.0
>
> ------------------ exception on sending bytes ---------
> WARNUNG: [/127.0.0.1:1294] EXCEPTION, please implement
> org.apache.camel.component.mina.MinaConsumer$1.exceptionCaught() for
> proper handling:
> org.apache.mina.filter.codec.ProtocolDecoderException:
> org.apache.mina.common.BufferDataException: dataLength: 1010792557
> (Hexdump: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 2E 30 22 20 65
> 6E 63 6F 64 69 6E 67 3D 22 49 53 4F 2D 38 38 35 39 2D 31 22 3F 3E 0D 0A
> 3C 72 6F 75 74 65 54 6F 3E 41 3C 2F 72 6F 75 74 65 54 6F 3E 0D 0A)
>        at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Protoco
> lCodecFilter.java:161)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageRece
> ived(AbstractIoFilterChain.java:298)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain.access$5(AbstractIo
> FilterChain.java:295)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain$1.messageReceived(A
> bstractIoFilterChain.java:646)
>        at
> org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilt
> er.java:220)
>        at
> org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run
> (ExecutorFilter.java:267)
>        at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
> .runTask(ThreadPoolExecutor.java:665)
>        at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
> .run(ThreadPoolExecutor.java:690)
>        at java.lang.Thread.run(Thread.java:595)
> Caused by: org.apache.mina.common.BufferDataException: dataLength:
> 1010792557
>        at
> org.apache.mina.common.ByteBuffer.prefixedDataAvailable(ByteBuffer.java:
> 1571)
>        at
> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.do
> Decode(ObjectSerializationDecoder.java:88)
>        at
> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(Cumulative
> ProtocolDecoder.java:133)
>        at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Protoco
> lCodecFilter.java:154)
>        ... 8 more
>
> -------------- Server -----------------
> CamelContext context=new DefaultCamelContext();
> // server component
> MinaComponent inComponent = new MinaComponent();
> context.addComponent("in", inComponent);
> final Endpoint inEndpoint = context.getEndpoint(ENDPOINT_INCOMING);
> // Route BUilder
> context.addRoutes(new RouteBuilder(){
>         public void configure() {
>        FromBuilder from = from(inEndpoint);
>        from.to("file://testA");
>        from("file://testA").process(new Processor(){
>                public void process(Exchange e){
>                        System.out.println("Received exchange for
> file://test: "+e.getIn().getMessageId());
>                }
>        });
>         }
> });
>
> System.out.println("Starting Context");
> context.start();
>
> ------------- Client ----------------
> Socket theSocket = new Socket("127.0.0.1", MinaServerTest1.PORT);
> PrintWriter out = new PrintWriter(theSocket.getOutputStream(), false);
>
> out.println("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
> out.println("<routeTo>A</routeTo>");
> out.flush();
> out.close();
>
>
>
>


Re: mina and camel

Posted by mat <fo...@gmail.com>.
First of all, I don't know how to answer your question. Sorry. However,
after I google "Camel", it seems exactly what I wanted. A routing
component could be used along with Mina server as a message router. My
original purpose is to build a server framework which is not depentent on
any protocols(http, row rocket, web service, db access)(kinda like a Mule).
I believe Mina + Camel can make building this system possible.

I also found this:

Apache Camel can be used as a routing and mediation engine for the following
projects:

Apache mina a networking framework
On 8/1/07, daniel golesny (innoWake gmbh) <da...@innowake.de>
wrote:
>
> Hi,
>
> I want to integrate a socket based application which is sending xml
> data. The data should be routed by analysing the content.
> I may not change to current protocol.
>
> I tried Camel that is very good for routing, but I couldn't find a way
> to open a socket.
> With Mina I could open a socket, so I tried to use Mina and Camel by the
> MinaComponent with this uri mina:tcp://127.0.0.1:22345
>
> But on sending some bytes (does not matter if "abc" or valid xml) I get
> an exception on deserializing. I can't find any example with mina and
> camel, can someone send me an example with camel and mina? Or is this
> the wrong way for routing data over raw socket?
>
>
> Version:
> Camel 1.0.0
>
> ------------------ exception on sending bytes ---------
> WARNUNG: [/127.0.0.1:1294] EXCEPTION, please implement
> org.apache.camel.component.mina.MinaConsumer$1.exceptionCaught() for
> proper handling:
> org.apache.mina.filter.codec.ProtocolDecoderException:
> org.apache.mina.common.BufferDataException: dataLength: 1010792557
> (Hexdump: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 2E 30 22 20 65
> 6E 63 6F 64 69 6E 67 3D 22 49 53 4F 2D 38 38 35 39 2D 31 22 3F 3E 0D 0A
> 3C 72 6F 75 74 65 54 6F 3E 41 3C 2F 72 6F 75 74 65 54 6F 3E 0D 0A)
>        at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Protoco
> lCodecFilter.java:161)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageRece
> ived(AbstractIoFilterChain.java:298)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain.access$5(AbstractIo
> FilterChain.java:295)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain$1.messageReceived(A
> bstractIoFilterChain.java:646)
>        at
> org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilt
> er.java:220)
>        at
> org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run
> (ExecutorFilter.java:267)
>        at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
> .runTask(ThreadPoolExecutor.java:665)
>        at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
> .run(ThreadPoolExecutor.java:690)
>        at java.lang.Thread.run(Thread.java:595)
> Caused by: org.apache.mina.common.BufferDataException: dataLength:
> 1010792557
>        at
> org.apache.mina.common.ByteBuffer.prefixedDataAvailable(ByteBuffer.java:
> 1571)
>        at
> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.do
> Decode(ObjectSerializationDecoder.java:88)
>        at
> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(Cumulative
> ProtocolDecoder.java:133)
>        at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Protoco
> lCodecFilter.java:154)
>        ... 8 more
>
> -------------- Server -----------------
> CamelContext context=new DefaultCamelContext();
> // server component
> MinaComponent inComponent = new MinaComponent();
> context.addComponent("in", inComponent);
> final Endpoint inEndpoint = context.getEndpoint(ENDPOINT_INCOMING);
> // Route BUilder
> context.addRoutes(new RouteBuilder(){
>         public void configure() {
>        FromBuilder from = from(inEndpoint);
>        from.to("file://testA");
>        from("file://testA").process(new Processor(){
>                public void process(Exchange e){
>                        System.out.println("Received exchange for
> file://test: "+e.getIn().getMessageId());
>                }
>        });
>         }
> });
>
> System.out.println("Starting Context");
> context.start();
>
> ------------- Client ----------------
> Socket theSocket = new Socket("127.0.0.1", MinaServerTest1.PORT);
> PrintWriter out = new PrintWriter(theSocket.getOutputStream(), false);
>
> out.println("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
> out.println("<routeTo>A</routeTo>");
> out.flush();
> out.close();
>
>
>
>

Re: mina and camel

Posted by mat <fo...@gmail.com>.
When use Mina in Camel, ObjectSerializationCodecFactory is a MUST for
message transforming on different VMs?

On 8/1/07, daniel golesny (innoWake gmbh) <da...@innowake.de>
wrote:
>
> Hi,
>
> I want to integrate a socket based application which is sending xml
> data. The data should be routed by analysing the content.
> I may not change to current protocol.
>
> I tried Camel that is very good for routing, but I couldn't find a way
> to open a socket.
> With Mina I could open a socket, so I tried to use Mina and Camel by the
> MinaComponent with this uri mina:tcp://127.0.0.1:22345
>
> But on sending some bytes (does not matter if "abc" or valid xml) I get
> an exception on deserializing. I can't find any example with mina and
> camel, can someone send me an example with camel and mina? Or is this
> the wrong way for routing data over raw socket?
>
>
> Version:
> Camel 1.0.0
>
> ------------------ exception on sending bytes ---------
> WARNUNG: [/127.0.0.1:1294] EXCEPTION, please implement
> org.apache.camel.component.mina.MinaConsumer$1.exceptionCaught() for
> proper handling:
> org.apache.mina.filter.codec.ProtocolDecoderException:
> org.apache.mina.common.BufferDataException: dataLength: 1010792557
> (Hexdump: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 2E 30 22 20 65
> 6E 63 6F 64 69 6E 67 3D 22 49 53 4F 2D 38 38 35 39 2D 31 22 3F 3E 0D 0A
> 3C 72 6F 75 74 65 54 6F 3E 41 3C 2F 72 6F 75 74 65 54 6F 3E 0D 0A)
>        at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Protoco
> lCodecFilter.java:161)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageRece
> ived(AbstractIoFilterChain.java:298)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain.access$5(AbstractIo
> FilterChain.java:295)
>        at
> org.apache.mina.common.support.AbstractIoFilterChain$1.messageReceived(A
> bstractIoFilterChain.java:646)
>        at
> org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilt
> er.java:220)
>        at
> org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run
> (ExecutorFilter.java:267)
>        at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
> .runTask(ThreadPoolExecutor.java:665)
>        at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
> .run(ThreadPoolExecutor.java:690)
>        at java.lang.Thread.run(Thread.java:595)
> Caused by: org.apache.mina.common.BufferDataException: dataLength:
> 1010792557
>        at
> org.apache.mina.common.ByteBuffer.prefixedDataAvailable(ByteBuffer.java:
> 1571)
>        at
> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.do
> Decode(ObjectSerializationDecoder.java:88)
>        at
> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(Cumulative
> ProtocolDecoder.java:133)
>        at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(Protoco
> lCodecFilter.java:154)
>        ... 8 more
>
> -------------- Server -----------------
> CamelContext context=new DefaultCamelContext();
> // server component
> MinaComponent inComponent = new MinaComponent();
> context.addComponent("in", inComponent);
> final Endpoint inEndpoint = context.getEndpoint(ENDPOINT_INCOMING);
> // Route BUilder
> context.addRoutes(new RouteBuilder(){
>         public void configure() {
>        FromBuilder from = from(inEndpoint);
>        from.to("file://testA");
>        from("file://testA").process(new Processor(){
>                public void process(Exchange e){
>                        System.out.println("Received exchange for
> file://test: "+e.getIn().getMessageId());
>                }
>        });
>         }
> });
>
> System.out.println("Starting Context");
> context.start();
>
> ------------- Client ----------------
> Socket theSocket = new Socket("127.0.0.1", MinaServerTest1.PORT);
> PrintWriter out = new PrintWriter(theSocket.getOutputStream(), false);
>
> out.println("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
> out.println("<routeTo>A</routeTo>");
> out.flush();
> out.close();
>
>
>
>

Re: mina and camel

Posted by peter royal <pr...@apache.org>.
On Jul 31, 2007, at 11:57 PM, daniel golesny ((innoWake gmbh)) wrote:
> org.apache.mina.filter.codec.ProtocolDecoderException:
> org.apache.mina.common.BufferDataException: dataLength: 1010792557
> (Hexdump: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 2E 30 22  
> 20 65
> 6E 63 6F 64 69 6E 67 3D 22 49 53 4F 2D 38 38 35 39 2D 31 22 3F 3E  
> 0D 0A
> 3C 72 6F 75 74 65 54 6F 3E 41 3C 2F 72 6F 75 74 65 54 6F 3E 0D 0A)

This sounds like the object serialization codec complaining about the  
serialized object being too large. Its a configurable parameter on  
the codec you probably want to tweak if you're going to be sending  
large objects.
-pete


-- 
proyal@apache.org - http://fotap.org/~osi