Claus Ibsen-2 wrote:
>
> On Mon, Dec 29, 2008 at 11:08 AM, Ganesh_Progress <[email protected]>
> 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.
-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.