用于网络磁盘的Camel文件组件

时间:2012-10-02 13:23:33

标签: file tomcat service apache-camel network-drive

我需要使用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运行与eclipse相同的项目时 - 复制到U盘已成功发生。

1 个答案:

答案 0 :(得分:2)

本地系统服务用户可能无法看到您映射的驱动器“U”。解决方案:使用UNC路径。

请注意,运行Tomcat的用户需要访问网络路径的权限 - 通常是本地系统服务用户不具备的权限。在这种情况下,您可以将Tomcat作为具有权限的用户运行,即通过在服务的“登录”选项卡中更改用户。