我需要使用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&autoCreate=false&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盘已成功发生。
答案 0 :(得分:2)
本地系统服务用户可能无法看到您映射的驱动器“U”。解决方案:使用UNC路径。
请注意,运行Tomcat的用户需要访问网络路径的权限 - 通常是本地系统服务用户不具备的权限。在这种情况下,您可以将Tomcat作为具有权限的用户运行,即通过在服务的“登录”选项卡中更改用户。