puneetjain,您好!

        I meet the same problem, this is caused by 
"File.createTempFile(filename)", the filename should not
be an absolute path, See the modified method code belowing:


   private void onProviderExchange(MessageExchange exchange) throws 
MessagingException 
        {
        // Exchange is finished
        if (exchange.getStatus() == ExchangeStatus.DONE) 
            {
            return;
            }
        // Exchange has been aborted with an exception
        else if (exchange.getStatus() == ExchangeStatus.ERROR) 
            {
            return;
            }
        // Fault message
        else if (exchange.getFault() != null) 
            {
            exchange.setStatus(ExchangeStatus.DONE);
            channel.send(exchange);
            } 
        else 
            {
            NormalizedMessage in = exchange.getMessage("in");
            
            if (in == null)
                {
                // no in message - strange
                throw new MessagingException("HandlerBean.onProviderExchange(): 
Exchange has no IN message");
                }
            else
                {
                String fileName = null;
                DataHandler content = null;
                Set attNames = in.getAttachmentNames();
                Iterator it = attNames.iterator();
                
                if (attNames.size()==1)
                    {
                    if (it.hasNext())
                        {
                        try
                            {

                                                    //////mofify the code start
                            File file = new File(it.next().toString());
                                                        fileName = 
file.getName();
                            content = in.getAttachment(file.getAbsolutePath());
   
                            File f = File.createTempFile("tmp_", fileName);

                                                        //////mofify the code 
end

                            FileOutputStream fos = new FileOutputStream(f);
                            content.writeTo(fos);
                            fos.flush();
                            fos.close();
                            
                            // for the sake of simplicity only return the file 
received as attachment
                            NormalizedMessage out = exchange.createMessage();
        
                            // set the content to dummy xml tag
                            out.setContent(new StringSource("<payload/>"));
                            
                            FileDataSource fds = new FileDataSource(f);
                            InputStream is = fds.getInputStream();
                            
                            // create a handler for the attachment
                            DataHandler dh = new DataHandler(new 
StreamDataSource(is, fds.getContentType()));
                            
                            // and add it to the message
                            out.addAttachment(fileName+"_cch", dh);
                            
                            // prepare and send the exchange
                            exchange.setMessage(out, "out");
                            channel.send(exchange);
                            
                            f.deleteOnExit();
                            }
                        catch (IOException ex)
                            {
                            throw new 
MessagingException("HandlerBean.onProviderExchange(): " + 
ex.getLocalizedMessage());
                            }
                        }
                    }
                else
                    {
                    // more or less than one attachment
                    throw new 
MessagingException("HandlerBean.onProviderExchange(): Wrong message format 
(invalid attachment count)");
                    }
                }
            }
        }

======= 2008-01-30 18:37:38 您在来信中写道:=======

>
>I have follow all the step to create http upload application given in the
>tutorial of servicemix successfully.
>The deployable of the application is successfully deployed on the
>servicemix.
>When I create a client and try to upload a file using the appliaction
>following exception displayed in the browser:
>
><?xml version="1.0" encoding="UTF-8" ?> 
>- <error>
>- <![CDATA[ 
>javax.jbi.messaging.MessagingException: HandlerBean.onProviderExchange():
>The filename, directory name, or volume label syntax is incorrect
>       at
>org.apache.servicemix.jbi.HandlerBean.onProviderExchange(HandlerBean.java:173)
>       at
>org.apache.servicemix.jbi.HandlerBean.onMessageExchange(HandlerBean.java:56)
>       at
>org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint.java:235)
>       at 
> org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:211)
>       at
>org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538)
>       at
>org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490)
>       at
>org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>       at
>org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
>       at
>org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:170)
>       at
>org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
>       at
>org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>       at
>java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>       at
>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>       at java.lang.Thread.run(Thread.java:595)
>  ]]> 
>  </error>
>
>
>
>And following exception appear on the console of servicemix:
>
>
>ERROR - BeanComponent                  - Error processing exchange InOut[
>  id: ID:10.105.115.61-117c979d8b4-10:2
>  status: Active
>  role: provider
>  service: {http://www.servicemix.org/example}httphandler
>  endpoint: handlerEndpoint
>  in: <?xml version="1.0" encoding="UTF-8"?><payload/>
>]
>javax.jbi.messaging.MessagingException: HandlerBean.onProviderExchange():
>The filename, directory name, or volume label syntax is incorrect
>        at
>org.apache.servicemix.jbi.HandlerBean.onProviderExchange(HandlerBean.java:173)
>        at
>org.apache.servicemix.jbi.HandlerBean.onMessageExchange(HandlerBean.java:56)
>        at
>org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint.java:235)
>        at
>org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:211)
>        at
>org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538)
>        at
>org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490)
>        at
>org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>        at
>org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
>        at
>org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:170)
>        at
>org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
>        at
>org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>        at
>java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>        at
>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>        at java.lang.Thread.run(Thread.java:595)
>
>
>Please help me to solve this problem.
>
>Thanks,
>Puneet Jain
>
>
>-- 
>View this message in context: 
>http://www.nabble.com/Problem-in-running-the-http-upload-application-tutorial-Example-tp15178224s12049p15178224.html
>Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>

= = = = = = = = = = = = = = = = = = = =
                        

        致
礼!
 
                                 
---------------------------------------------------------
程操红 
用友软件股份有限公司 集团平台技术开发部
Tel:62435466
Email:[EMAIL PROTECTED]
地址:北京市海淀区北清路68号 用友软件园
邮编:100085
---------------------------------------------------------

Reply via email to