【发布时间】:2023-03-04 18:52:01
【问题描述】:
我有一个 Spring MVC 3.1 webapp 在 CentOS 服务器上的 Tomcat 5.5 上运行。我有一个控制器,它检查位于网络共享上的文件是否存在,该文件安装在服务器上 (/netshare/data/)。我的应用程序似乎看不到这个目录,但是当我使用相同的代码运行独立的 java 应用程序时,它能够找到目录及其包含的文件而不会出错。 Tomcat中是否需要进行一些配置,以便Java可以引用webapp之外的目录?
这是我的控制器类:
@Controller
@RequestMapping("/Test")
public class TestController {
@RequestMapping(method=RequestMethod.GET)
public String showTest(Model model){
List<String> messages = new ArrayList<String>();
File dirTest = new File("/netshare/data");
if (dirTest.isDirectory()){
messages.add("Base directory found successfully!");
File dataFileDir = new File("/netshare/data/dataFiles/");
Integer fileId = 8000;
File dataFile = new File(dataFileDir, fileId.toString() + ".pdf");
if (dataFile.exists()){
messages.add("Data file found!");
}
else {
messages.add("Data file NOT found!");
}
}
else {
messages.add("Base directory not found!");
}
model.addAttribute("messages", messages);
return "test";
}
【问题讨论】:
-
如果您将此路径更改为指向某个本地目录会发生什么?
-
@AndrewLogvinov 本地,您是指在 webapp 文件夹内,还是本地文件系统目录(例如 /usr/home)?
-
我的意思是第二个,f.e.
/usr/home或/tmp. -
@AndrewLogvinov 该应用程序能够毫无问题地看到
/usr/home。挂载的目录应该可供所有用户访问,但现在我必须确认这一点。 -
看起来确实是权限问题。尝试使用运行 Tomcat 的同一操作系统用户运行独立程序。即使从命令行访问目录也应该足够了。
标签: java linux tomcat web-applications spring-mvc