You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Richa Khurana <ri...@globallogic.com> on 2010/02/10 11:26:12 UTC

Unable to port file poller component to Fuse ESB 3.4

Hi,

 

I have a file poller which polls for PDF and TIFF Files. These files
once polled are marshaled using CustomFileMarshaler extending from
BinaryFileMarshaller which has the following overridden APIs-

 

 

    @Override public void readMessage(MessageExchange messageExchange,
NormalizedMessage normalizedMessage,

        InputStream inputStream, String path) throws IOException,
JBIException {

 

        try {

            super.readMessage(messageExchange, normalizedMessage,
inputStream, path);

 

            String tempFilePathFull =
storeUploadedFileInFS(normalizedMessage, path,

                    path.substring(path.lastIndexOf(".")));

            normalizedMessage.setContent(new StringSource(

                    UtilConstants.FILE_POLLER_CUSTOM_TAG_START +
tempFilePathFull +

                    UtilConstants.FILE_POLLER_CUSTOM_TAG_END));

        } catch (IOException exception) {

            exception.printStackTrace();

            throw exception;

        }

    }

 

storeUploadedFileInFS(.. creates temp copy of the file being polled)

This works completely fine with SMX3.2.x but fails once ported to
FuseESB3.4 throwing the below stack trace. Kindly help.

 

WARN  - FileComponent                  - Message in file
C:\inbox\Cred_Appr_BCA1.pdf could not be handled successfully:
java.io.IOException:

 Stream closed

org.apache.servicemix.soap.api.Fault: java.io.IOException: Stream closed

        at
org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.h
andleMessage(AttachmentsOutInterceptor.java:71)

        at
org.apache.servicemix.soap.core.PhaseInterceptorChain.doIntercept(PhaseI
nterceptorChain.java:85)

        at
org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler.createMessa
ge(DefaultProviderMarshaler.java:79)

        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnlyInS
ession(JmsProviderEndpoint.java:561)

        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint$1.doInJms(JmsPro
viderEndpoint.java:531)

        at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)

        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnly(Jm
sProviderEndpoint.java:542)

        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.process(JmsProvi
derEndpoint.java:499)

        at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeC
ycle.java:627)

        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBas
eLifeCycle.java:581)

        at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncB
aseLifeCycle.java:535)

        at
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(Sync
LifeCycleWrapper.java:60)

        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(D
eliveryChannelImpl.java:623)

        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.j
ava:172)

        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java
:168)

        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:1
34)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
r.java:886)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va:908)

        at java.lang.Thread.run(Thread.java:619)

Caused by: java.io.IOException: Stream closed

        at
java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145)

        at
java.io.BufferedInputStream.read(BufferedInputStream.java:308)

        at java.io.FilterInputStream.read(FilterInputStream.java:90)

        at javax.activation.DataHandler.writeTo(DataHandler.java:293)

        at
javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)

        at
javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:845)

        at
javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:361)

        at
com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:85)

        at
javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:869)

        at javax.activation.DataHandler.writeTo(DataHandler.java:302)

        at
javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)

        at
javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)

        at
org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.w
riteMultipartMessage(AttachmentsOutInterceptor.java:130)

        at
org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.h
andleMessage(AttachmentsOutInterceptor.java:67)

 

Richa Khurana| Associate Consultant - Engineering| GlobalLogic Inc.
USA | INDIA | UKRAINE | CHINA
Office: +91.120.406.2681  

www.globallogic.com <http://www.globallogic.com/> 
InfoWorld Award Winner for Agile Innovation
<http://www.globallogic.com/Media/pressReleaseDetail.asp?press/65> 

Disclaimer: http://www.globallogic.com/email_disclaimer.txt
<http://www.globallogic.com/email_disclaimer.txt>  

 


Re: Unable to port file poller component to Fuse ESB 3.4

Posted by Richa Khurana <ri...@globallogic.com>.
Hello Gert,
Thanks for the response, Please find below the details of what I do in my
component in the following flow-

Files(PDF/TIFF)->File Poller->CustomFileMarshaler (which extends
BinaryFileMarshaler, reads the attachment, stores the contents of polled
files in a temporary location and sends the absolute path of this temporary
location of file in normalizedMessage.setContent)->JMS
Provider->JMSConsumer->Custom Bean where I get the file location from
normalizedMessage.getContent and have the necessary logic.

This flow works fine in native SMX but failed without any modifications in
FuseESB. 

I dont have any debugger on to read StreamSource and I have done the
following to be able to fix the problem-

 1. Different concrete implementations of Source in CustomFileMarshaler: In
our CustomFileMarshaler, we fetch the stream of file, temporarily store the
file and send the path of this temporary location in
normalizedMessage.setContent() method. I tried to send DOMSource,
StringSource and StreamSource as objects.
2. turn on streamCaching() in ServiceRouteBuilder
3. Processor: In ServiceRouteBuilder of DocLoader component, I tried writing
a custom Processor between the file poller endpoint to JMS provider for
DocLoader Queue. Much to our surprise, the code written in the custom
processor was never invoked.
4. I also tried the solution proposed by you which is-
  "avoid
sending the attachments in a non-rereadable format in the first place.
 You could do in your own marshaler by replacing the call to
super.readMessage with a copy of the method contents in the parent
BinaryFileMarshaler, replacing the StreamDataSource used there with
e.g. a BytesDataSource that allows reading from it multiple times."

And got the following error-
org.apache.servicemix.soap.api.Fault: javax.mail.internet.ParseException
        at
org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.handleMessage(AttachmentsOutInterceptor.java:69)
        at
org.apache.servicemix.soap.core.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:85)
        at
org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler.createMessage(DefaultProviderMarshaler.java:79)
        at
com.thirdpillar.esb.tuscany.faxUpload.marshaller.CustomJmsProviderMarshaller.createMessage(CustomJmsProviderMarshaller.java:53)
        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnlyInSession(JmsProviderEndpoint.java:561)
        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint$1.doInJms(JmsProviderEndpoint.java:531)
        at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnly(JmsProviderEndpoint.java:542)
        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.process(JmsProviderEndpoint.java:499)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
        at
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:623)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.mail.internet.ParseException

Kindly help. I am attaching the Marshaller for your reference.

Thanks,
Richa. http://old.nabble.com/file/p27637602/CustomFileMarshaller.java
CustomFileMarshaller.java 


Gert Vanthienen wrote:
> 
> Richa,
> 
> From the stack trace, it looks like the 'Stream closed' problem occurs
> while trying to send the attachments into a JMS queue.  This usually
> happens when the attachments have been read/processed by something
> before you get to that point.  One way to solve this issue would be to
> find out what is processing the attachments.
> 
> Could you provide us with a bit more details about what you're trying
> to do here (the flow of the message before it reaches the endpoint)?
> Is it possible that the old servicemix instance had DEBUG logging
> enabled and that this has not yet been set on the new instance?  Did
> you create custom exchange listeners or auditors that might have read
> the attachment?
> 
> Another thing you could do to avoid running into this issue, is avoid
> sending the attachments in a non-rereadable format in the first place.
>  You could do in your own marshaler by replacing the call to
> super.readMessage with a copy of the method contents in the parent
> BinaryFileMarshaler, replacing the StreamDataSource used there with
> e.g. a BytesDataSource that allows reading from it multiple times.
> 
> Regards,
> 
> Gert Vanthienen
> ------------------------
> Open Source SOA: http://fusesource.com
> Blog: http://gertvanthienen.blogspot.com/
> 
> 
> 
> On 11 February 2010 06:38, Richa Khurana <ri...@globallogic.com>
> wrote:
>> Hello everyone,
>> It will be really kind if you provide inputs for the issue, it's a
>> blocker for me and I am not able to go ahead :(
>> Thanks,
>> Richa.
>>
>> -----Original Message-----
>> From: Richa Khurana [mailto:richa.khurana@globallogic.com]
>> Sent: Wednesday, February 10, 2010 3:56 PM
>> To: users@servicemix.apache.org
>> Subject: Unable to port file poller component to Fuse ESB 3.4
>>
>> Hi,
>>
>>
>>
>> I have a file poller which polls for PDF and TIFF Files. These files
>> once polled are marshaled using CustomFileMarshaler extending from
>> BinaryFileMarshaller which has the following overridden APIs-
>>
>>
>>
>>
>>
>>    @Override public void readMessage(MessageExchange messageExchange,
>> NormalizedMessage normalizedMessage,
>>
>>        InputStream inputStream, String path) throws IOException,
>> JBIException {
>>
>>
>>
>>        try {
>>
>>            super.readMessage(messageExchange, normalizedMessage,
>> inputStream, path);
>>
>>
>>
>>            String tempFilePathFull =
>> storeUploadedFileInFS(normalizedMessage, path,
>>
>>                    path.substring(path.lastIndexOf(".")));
>>
>>            normalizedMessage.setContent(new StringSource(
>>
>>                    UtilConstants.FILE_POLLER_CUSTOM_TAG_START +
>> tempFilePathFull +
>>
>>                    UtilConstants.FILE_POLLER_CUSTOM_TAG_END));
>>
>>        } catch (IOException exception) {
>>
>>            exception.printStackTrace();
>>
>>            throw exception;
>>
>>        }
>>
>>    }
>>
>>
>>
>> storeUploadedFileInFS(.. creates temp copy of the file being polled)
>>
>> This works completely fine with SMX3.2.x but fails once ported to
>> FuseESB3.4 throwing the below stack trace. Kindly help.
>>
>>
>>
>> WARN  - FileComponent                  - Message in file
>> C:\inbox\Cred_Appr_BCA1.pdf could not be handled successfully:
>> java.io.IOException:
>>
>>  Stream closed
>>
>> org.apache.servicemix.soap.api.Fault: java.io.IOException: Stream closed
>>
>>        at
>> org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.h
>> andleMessage(AttachmentsOutInterceptor.java:71)
>>
>>        at
>> org.apache.servicemix.soap.core.PhaseInterceptorChain.doIntercept(PhaseI
>> nterceptorChain.java:85)
>>
>>        at
>> org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler.createMessa
>> ge(DefaultProviderMarshaler.java:79)
>>
>>        at
>> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnlyInS
>> ession(JmsProviderEndpoint.java:561)
>>
>>        at
>> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint$1.doInJms(JmsPro
>> viderEndpoint.java:531)
>>
>>        at
>> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
>>
>>        at
>> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnly(Jm
>> sProviderEndpoint.java:542)
>>
>>        at
>> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.process(JmsProvi
>> derEndpoint.java:499)
>>
>>        at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeC
>> ycle.java:627)
>>
>>        at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBas
>> eLifeCycle.java:581)
>>
>>        at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncB
>> aseLifeCycle.java:535)
>>
>>        at
>> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(Sync
>> LifeCycleWrapper.java:60)
>>
>>        at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(D
>> eliveryChannelImpl.java:623)
>>
>>        at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.j
>> ava:172)
>>
>>        at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java
>> :168)
>>
>>        at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:1
>> 34)
>>
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
>> r.java:886)
>>
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
>> va:908)
>>
>>        at java.lang.Thread.run(Thread.java:619)
>>
>> Caused by: java.io.IOException: Stream closed
>>
>>        at
>> java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145)
>>
>>        at
>> java.io.BufferedInputStream.read(BufferedInputStream.java:308)
>>
>>        at java.io.FilterInputStream.read(FilterInputStream.java:90)
>>
>>        at javax.activation.DataHandler.writeTo(DataHandler.java:293)
>>
>>        at
>> javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
>>
>>        at
>> javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:845)
>>
>>        at
>> javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:361)
>>
>>        at
>> com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:85)
>>
>>        at
>> javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:869)
>>
>>        at javax.activation.DataHandler.writeTo(DataHandler.java:302)
>>
>>        at
>> javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
>>
>>        at
>> javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)
>>
>>        at
>> org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.w
>> riteMultipartMessage(AttachmentsOutInterceptor.java:130)
>>
>>        at
>> org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.h
>> andleMessage(AttachmentsOutInterceptor.java:67)
>>
>>
>>
>> Richa Khurana| Associate Consultant - Engineering| GlobalLogic Inc.
>> USA | INDIA | UKRAINE | CHINA
>> Office: +91.120.406.2681
>>
>> www.globallogic.com <http://www.globallogic.com/>
>> InfoWorld Award Winner for Agile Innovation
>> <http://www.globallogic.com/Media/pressReleaseDetail.asp?press/65>
>>
>> Disclaimer: http://www.globallogic.com/email_disclaimer.txt
>> <http://www.globallogic.com/email_disclaimer.txt>
>>
>>
>>
>>
> 
> 
> -----
> ---
> Gert Vanthienen
> http://gertvanthienen.blogspot.com
> 

-- 
View this message in context: http://old.nabble.com/Unable-to-port-file-poller-component-to-Fuse-ESB-3.4-tp27529046p27637602.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: Unable to port file poller component to Fuse ESB 3.4

Posted by Gert Vanthienen <ge...@gmail.com>.
Richa,

>From the stack trace, it looks like the 'Stream closed' problem occurs
while trying to send the attachments into a JMS queue.  This usually
happens when the attachments have been read/processed by something
before you get to that point.  One way to solve this issue would be to
find out what is processing the attachments.

Could you provide us with a bit more details about what you're trying
to do here (the flow of the message before it reaches the endpoint)?
Is it possible that the old servicemix instance had DEBUG logging
enabled and that this has not yet been set on the new instance?  Did
you create custom exchange listeners or auditors that might have read
the attachment?

Another thing you could do to avoid running into this issue, is avoid
sending the attachments in a non-rereadable format in the first place.
 You could do in your own marshaler by replacing the call to
super.readMessage with a copy of the method contents in the parent
BinaryFileMarshaler, replacing the StreamDataSource used there with
e.g. a BytesDataSource that allows reading from it multiple times.

Regards,

Gert Vanthienen
------------------------
Open Source SOA: http://fusesource.com
Blog: http://gertvanthienen.blogspot.com/



On 11 February 2010 06:38, Richa Khurana <ri...@globallogic.com> wrote:
> Hello everyone,
> It will be really kind if you provide inputs for the issue, it's a
> blocker for me and I am not able to go ahead :(
> Thanks,
> Richa.
>
> -----Original Message-----
> From: Richa Khurana [mailto:richa.khurana@globallogic.com]
> Sent: Wednesday, February 10, 2010 3:56 PM
> To: users@servicemix.apache.org
> Subject: Unable to port file poller component to Fuse ESB 3.4
>
> Hi,
>
>
>
> I have a file poller which polls for PDF and TIFF Files. These files
> once polled are marshaled using CustomFileMarshaler extending from
> BinaryFileMarshaller which has the following overridden APIs-
>
>
>
>
>
>    @Override public void readMessage(MessageExchange messageExchange,
> NormalizedMessage normalizedMessage,
>
>        InputStream inputStream, String path) throws IOException,
> JBIException {
>
>
>
>        try {
>
>            super.readMessage(messageExchange, normalizedMessage,
> inputStream, path);
>
>
>
>            String tempFilePathFull =
> storeUploadedFileInFS(normalizedMessage, path,
>
>                    path.substring(path.lastIndexOf(".")));
>
>            normalizedMessage.setContent(new StringSource(
>
>                    UtilConstants.FILE_POLLER_CUSTOM_TAG_START +
> tempFilePathFull +
>
>                    UtilConstants.FILE_POLLER_CUSTOM_TAG_END));
>
>        } catch (IOException exception) {
>
>            exception.printStackTrace();
>
>            throw exception;
>
>        }
>
>    }
>
>
>
> storeUploadedFileInFS(.. creates temp copy of the file being polled)
>
> This works completely fine with SMX3.2.x but fails once ported to
> FuseESB3.4 throwing the below stack trace. Kindly help.
>
>
>
> WARN  - FileComponent                  - Message in file
> C:\inbox\Cred_Appr_BCA1.pdf could not be handled successfully:
> java.io.IOException:
>
>  Stream closed
>
> org.apache.servicemix.soap.api.Fault: java.io.IOException: Stream closed
>
>        at
> org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.h
> andleMessage(AttachmentsOutInterceptor.java:71)
>
>        at
> org.apache.servicemix.soap.core.PhaseInterceptorChain.doIntercept(PhaseI
> nterceptorChain.java:85)
>
>        at
> org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler.createMessa
> ge(DefaultProviderMarshaler.java:79)
>
>        at
> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnlyInS
> ession(JmsProviderEndpoint.java:561)
>
>        at
> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint$1.doInJms(JmsPro
> viderEndpoint.java:531)
>
>        at
> org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)
>
>        at
> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnly(Jm
> sProviderEndpoint.java:542)
>
>        at
> org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.process(JmsProvi
> derEndpoint.java:499)
>
>        at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeC
> ycle.java:627)
>
>        at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBas
> eLifeCycle.java:581)
>
>        at
> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncB
> aseLifeCycle.java:535)
>
>        at
> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(Sync
> LifeCycleWrapper.java:60)
>
>        at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(D
> eliveryChannelImpl.java:623)
>
>        at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.j
> ava:172)
>
>        at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java
> :168)
>
>        at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:1
> 34)
>
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
> r.java:886)
>
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
> va:908)
>
>        at java.lang.Thread.run(Thread.java:619)
>
> Caused by: java.io.IOException: Stream closed
>
>        at
> java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145)
>
>        at
> java.io.BufferedInputStream.read(BufferedInputStream.java:308)
>
>        at java.io.FilterInputStream.read(FilterInputStream.java:90)
>
>        at javax.activation.DataHandler.writeTo(DataHandler.java:293)
>
>        at
> javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
>
>        at
> javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:845)
>
>        at
> javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:361)
>
>        at
> com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:85)
>
>        at
> javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:869)
>
>        at javax.activation.DataHandler.writeTo(DataHandler.java:302)
>
>        at
> javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
>
>        at
> javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)
>
>        at
> org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.w
> riteMultipartMessage(AttachmentsOutInterceptor.java:130)
>
>        at
> org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.h
> andleMessage(AttachmentsOutInterceptor.java:67)
>
>
>
> Richa Khurana| Associate Consultant - Engineering| GlobalLogic Inc.
> USA | INDIA | UKRAINE | CHINA
> Office: +91.120.406.2681
>
> www.globallogic.com <http://www.globallogic.com/>
> InfoWorld Award Winner for Agile Innovation
> <http://www.globallogic.com/Media/pressReleaseDetail.asp?press/65>
>
> Disclaimer: http://www.globallogic.com/email_disclaimer.txt
> <http://www.globallogic.com/email_disclaimer.txt>
>
>
>
>

RE: Unable to port file poller component to Fuse ESB 3.4

Posted by Richa Khurana <ri...@globallogic.com>.
Hello everyone, 
It will be really kind if you provide inputs for the issue, it's a
blocker for me and I am not able to go ahead :(
Thanks,
Richa.

-----Original Message-----
From: Richa Khurana [mailto:richa.khurana@globallogic.com] 
Sent: Wednesday, February 10, 2010 3:56 PM
To: users@servicemix.apache.org
Subject: Unable to port file poller component to Fuse ESB 3.4

Hi,

 

I have a file poller which polls for PDF and TIFF Files. These files
once polled are marshaled using CustomFileMarshaler extending from
BinaryFileMarshaller which has the following overridden APIs-

 

 

    @Override public void readMessage(MessageExchange messageExchange,
NormalizedMessage normalizedMessage,

        InputStream inputStream, String path) throws IOException,
JBIException {

 

        try {

            super.readMessage(messageExchange, normalizedMessage,
inputStream, path);

 

            String tempFilePathFull =
storeUploadedFileInFS(normalizedMessage, path,

                    path.substring(path.lastIndexOf(".")));

            normalizedMessage.setContent(new StringSource(

                    UtilConstants.FILE_POLLER_CUSTOM_TAG_START +
tempFilePathFull +

                    UtilConstants.FILE_POLLER_CUSTOM_TAG_END));

        } catch (IOException exception) {

            exception.printStackTrace();

            throw exception;

        }

    }

 

storeUploadedFileInFS(.. creates temp copy of the file being polled)

This works completely fine with SMX3.2.x but fails once ported to
FuseESB3.4 throwing the below stack trace. Kindly help.

 

WARN  - FileComponent                  - Message in file
C:\inbox\Cred_Appr_BCA1.pdf could not be handled successfully:
java.io.IOException:

 Stream closed

org.apache.servicemix.soap.api.Fault: java.io.IOException: Stream closed

        at
org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.h
andleMessage(AttachmentsOutInterceptor.java:71)

        at
org.apache.servicemix.soap.core.PhaseInterceptorChain.doIntercept(PhaseI
nterceptorChain.java:85)

        at
org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler.createMessa
ge(DefaultProviderMarshaler.java:79)

        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnlyInS
ession(JmsProviderEndpoint.java:561)

        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint$1.doInJms(JmsPro
viderEndpoint.java:531)

        at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:428)

        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.processInOnly(Jm
sProviderEndpoint.java:542)

        at
org.apache.servicemix.jms.endpoints.JmsProviderEndpoint.process(JmsProvi
derEndpoint.java:499)

        at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeC
ycle.java:627)

        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBas
eLifeCycle.java:581)

        at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncB
aseLifeCycle.java:535)

        at
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(Sync
LifeCycleWrapper.java:60)

        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(D
eliveryChannelImpl.java:623)

        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.j
ava:172)

        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java
:168)

        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:1
34)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
r.java:886)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va:908)

        at java.lang.Thread.run(Thread.java:619)

Caused by: java.io.IOException: Stream closed

        at
java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145)

        at
java.io.BufferedInputStream.read(BufferedInputStream.java:308)

        at java.io.FilterInputStream.read(FilterInputStream.java:90)

        at javax.activation.DataHandler.writeTo(DataHandler.java:293)

        at
javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)

        at
javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:845)

        at
javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:361)

        at
com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:85)

        at
javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:869)

        at javax.activation.DataHandler.writeTo(DataHandler.java:302)

        at
javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)

        at
javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)

        at
org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.w
riteMultipartMessage(AttachmentsOutInterceptor.java:130)

        at
org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor.h
andleMessage(AttachmentsOutInterceptor.java:67)

 

Richa Khurana| Associate Consultant - Engineering| GlobalLogic Inc.
USA | INDIA | UKRAINE | CHINA
Office: +91.120.406.2681  

www.globallogic.com <http://www.globallogic.com/> 
InfoWorld Award Winner for Agile Innovation
<http://www.globallogic.com/Media/pressReleaseDetail.asp?press/65> 

Disclaimer: http://www.globallogic.com/email_disclaimer.txt
<http://www.globallogic.com/email_disclaimer.txt>