2012-10-02 114 views
1

我需要保存文件使用系統服務的Apache Tomcat到網絡驅動器,並得到所有的時間錯誤:網絡磁盤駱駝文件組件

Exception: org.apache.camel.component.file.GenericFileOperationFailedException: Cannot store file: u:\xxx.txt 

我的路線示例:

<route id="myRoute"> 
     <from uri="quartz:myQuartz?cron=0+0+*+?+*+MON-FRI"/> 
     <camel:doTry> 
      <bean method="getData" ref="myService"/> 
      <marshal ref="bindyFixedDataformat"/> 
      <to uri="file:u:?fileName=xxx.txt&amp;autoCreate=false&amp;fileExist=Append"/> 
      <to uri="file://c:/XXX/files?fileName=xxx-${date:now:yyyyMMdd}.txt"/> 
      <camel:bean method="setProcessed" ref="myService"/> 
     <camel:doCatch> 
      <exception>java.io.IOException</exception> 
      <camel:log message="Network drive (U:) is not available, please renew connection!" loggingLevel="ERROR"/> 
      <camel:bean method="setFailed" ref="myService"/> 
     </camel:doCatch> 
     <camel:doCatch> 
      <exception>java.lang.Exception</exception> 
      <camel:log message="Unexpected error has occured!" loggingLevel="ERROR" /> 
      <camel:bean method="setFailed" ref="myService"/> 
     </camel:doCatch> 
     </camel:doTry> 
    </route> 

「U '磁盤是映射的網絡磁盤。但與我的第二個分區磁盤'D'文件相同的路線創建成功。

我正在生成WAR文件並使用Apache Tomcat的本地系統服務運行它。

有趣的是,在服務之前,當我通過Maven運行同一個項目並通過maven複製到U盤時,發生了成功。

回答

2

本地系統服務用戶可能看不到您映射的驅動器'U'。解決方案:使用UNC路徑。

請注意,運行Tomcat的用戶需要訪問網絡路徑的權限 - 通常是本地系統服務用戶不會擁有的權限。在這種情況下,您可以以擁有權限的用戶身份運行Tomcat,即通過在服務的「登錄」選項卡中更改用戶。

+0

如果我改成這樣: <到URI = 「文件:\\?1.255.255.1 \目錄文件名= xxx.txt & AUTOCREATE =假& fileExist =附加」/> 我得到同樣的錯誤 異常:org.apache.camel.component.file.GenericFileOperationFailedException:無法存儲文件:\\ 1.255.255.1 \ directory \ xxx.txt 此外,如果我更改登錄爲服務相同的用戶對此網絡驅動器的權限是什麼 - 結果相同。 :( – iriwkins

+0

因此,如果您在以該用戶身份登錄時將其鍵入/粘貼到Windows資源管理器中,是否可以打開\\ 1.255.255.1 \目錄? –

+0

是的!我甚至可以創建,更改和刪除那些文件 – iriwkins