camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ganesh_Progress <chganes...@gmail.com>
Subject Re: java.io.FileNotFoundException, when tries to run the aggregator pattern
Date Tue, 30 Dec 2008 04:47:46 GMT



Claus Ibsen-2 wrote:
> 
> On Mon, Dec 29, 2008 at 12:03 PM, Ganesh_Progress <chganeshch@gmail.com>
> wrote:
>>
>>
>>
>> Claus Ibsen-2 wrote:
>>>
>>> On Mon, Dec 29, 2008 at 11:08 AM, Ganesh_Progress <chganeshch@gmail.com>
>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I am new to the Camel world and am trying to learn the behavior of the
>>>> aggregator pattern.
>>>>
>>>> I have created a camel configuration with aggregator pattern with file
>>>> endpoints.
>>>>
>>>> I got the following consistent error when I tried to run the created
>>>> the
>>>> configuration. java.io.FileNotFoundException.
>>>>
>>>> Exception:
>>>> Caused by: java.io.FileNotFoundException:
>>>> D:\FuseEclipse3.4.1\runtime-New_configuration(2)\Fuse\Aggregator\out\Copy
>>>> of
>>>> Sample.xml (The system cannot find the file specified)
>>>>
>>>>      at java.io.FileInputStream.open(Native Method)
>>>>
>>>>      at java.io.FileInputStream.<init>(Unknown Source)
>>>>
>>>>      at java.io.FileInputStream.<init>(Unknown Source)
>>>>
>>>>      at sun.net.www.protocol.file.FileURLConnection.connect(Unknown
>>>> Source)
>>>>
>>>>      at
>>>> sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown
>>>> Source)
>>>>
>>>>      at
>>>> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown
>>>> Source)
>>>>
>>>>      at
>>>> com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown
>>>> Source)
>>>>
>>>>      at
>>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
>>>> Source)
>>>>
>>>>      at
>>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
>>>> Source)
>>>>
>>>>      at
>>>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown
>>>> Source)
>>>>
>>>>      at
>>>> com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown
>>>> Source)
>>>>
>>>>      at
>>>> com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown
>>>> Source)
>>>>
>>>>      at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
>>>>
>>>>      at
>>>> org.apache.camel.converter.jaxp.XmlConverter.toDOMDocument(XmlConverter.java:528)
>>>>
>>>>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>
>>>>      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>
>>>>      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>>>
>>>>      at java.lang.reflect.Method.invoke(Unknown Source)
>>>>
>>>>      at
>>>> org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:434)
>>>>
>>>>      ... 12 more
>>>>
>>>>
>>>> Following is the Camel Configuration, for which I got the "file not
>>>> found
>>>> exception".
>>>>
>>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="
>>>> http://www.springframework.org/schema/beans
>>>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>>>> http://activemq.apache.org/camel/schema/spring
>>>> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd"><camelContext
>>>> id="camelroute" xmlns="http://activemq.apache.org/camel/schema/spring">
>>>> <route xmlns="http://activemq.apache.org/camel/schema/spring">
>>>>    <from
>>>> uri="file:///D:/FID_341/runtime-New_configuration/FuseFIDCamel/Aggregator/in"
>>>> id="Camel_File_2"/>
>>>>    <aggregator batchTimeout="3000" batchSize="2"
>>>> id="Camel_Aggregator_4">
>>>>        <xpath>/Persons/Person/Name</xpath>
>>>>        <to
>>>> uri="file:///D:/FID_341/runtime-New_configuration/FuseFIDCamel/Aggregator/out"
>>>> id="Camel_File_6"/>
>>>>    </aggregator>
>>>> </route>
>>>> </camelContext></beans>
>>>>
>>>>
>>>> Finally I could find the workaround to overcome the issue. I could made
>>>> it
>>>> successfully running by modifying the From URI by adding the
>>>> "?noop=true"
>>>> at
>>>> the end.
>>>>
>>>> Below is the camel configuration, which I run successfully.
>>>>
>>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="
>>>> http://www.springframework.org/schema/beans
>>>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>>>> http://activemq.apache.org/camel/schema/spring
>>>> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd"><camelContext
>>>> id="camelroute" xmlns="http://activemq.apache.org/camel/schema/spring">
>>>> <route xmlns="http://activemq.apache.org/camel/schema/spring">
>>>>    <from
>>>> uri="file:///D:/FID_341/runtime-New_configuration/FuseFIDCamel/Aggregator/in?noop=true"
>>>> id="Camel_File_2"/>
>>>>    <aggregator batchTimeout="3000" batchSize="2"
>>>> id="Camel_Aggregator_4">
>>>>        <xpath>/Persons/Person/Name</xpath>
>>>>        <to
>>>> uri="file:///D:/FID_341/runtime-New_configuration/FuseFIDCamel/Aggregator/out"
>>>> id="Camel_File_6"/>
>>>>    </aggregator>
>>>> </route>
>>>> </camelContext></beans>
>>>>
>>>>
>>>> With the above exercise, I understand that File endpoint component is
>>>> consuming the message from file and then it is moving the file to other
>>>> location. But Aggregator is trying to pick the file from the previous
>>>> location.
>>>>
>>>> Can somebody validate the above statement? I feel this will be a bug
>>>> and
>>>> File endpoint should be able to pass the message exchange to the
>>>> Aggregator
>>>> and Aggregator should process the same message exchange. Can somebody
>>>> confirm that this is an issue?
>>> Ah the route is like two fold when using the aggregator as it's
>>> batching the file exchanges. By default the file consumer will move
>>> processed file into a .camel subfolder.
>>> Appending ?noop=true hinders this and thus the file remains untouched.
>>>
>>> What you need to do is to ensure the exchange is not file based,
>>> anymore. You can do this by converting the payload from java.io.File
>>> to eg. String or byte[] etc.
>>>
>>> So inserting a convertBodyTo so do the trick
>>>
>>>     <from
>>>
>>> uri="file:///D:/FID_341/runtime-New_configuration/FuseFIDCamel/Aggregator/in"
>>>  id="Camel_File_2"/>
>>>     <convertBodyTo type="java.lang.String"/>
>>>     <aggregator batchTimeout="3000" batchSize="2"
>>> id="Camel_Aggregator_4">
>>>
>>> Could you post back if that works. Then I guess we should improve the
>>> wiki documentation with your example: file -> aggregate with this
>>> pitfall
>>>
>>>>
>>>> Regards
>>>> Ganesh
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/java.io.FileNotFoundException%2C-when-tries-to-run-the-aggregator-pattern-tp21201076s22882p21201076.html
>>>> Sent from the Camel - Development mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> /Claus Ibsen
>>> Apache Camel Committer
>>> Blog: http://davsclaus.blogspot.com/
>>>
>>>
>>
>> Hi Claus Ibsen,
>>
>> By inserting a convertBodyTo doesn't work. Got the same error.
> Ahh there was a flaw in the batch processor that just recently has
> been fixed in 1.5.1 or later. So we must use a workaround with
> intermediate seda queues
> 
> So your route should be split into two combined with seda queues such as:
> 
> from -> convert body to -> to("seda:foo")
> from("seda:foo") -> aggegate
> 
> 
> 
>>
>> -Regards
>> Ganesh
>> --
>> View this message in context:
>> http://www.nabble.com/java.io.FileNotFoundException%2C-when-tries-to-run-the-aggregator-pattern-tp21201076s22882p21201683.html
>> Sent from the Camel - Development mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> 
> /Claus Ibsen
> Apache Camel Committer
> Blog: http://davsclaus.blogspot.com/
> 
> 

Hi Claus, thanks for the response

-Ganesh
-- 
View this message in context: http://www.nabble.com/java.io.FileNotFoundException%2C-when-tries-to-run-the-aggregator-pattern-tp21201076s22882p21213115.html
Sent from the Camel - Development mailing list archive at Nabble.com.


Mime
View raw message