免责声明:目前,由于缺少Linux开发/测试服务器,我目前无法自行测试。因此我在这里问这个问题。我最终会有一个Linux机器,但目前仅限于使用Windows。
我正在设计一个将在Windows上运行Tomcat 7的webapp& Linux操作系统。
假设在两个系统上WAR都部署在以下位置(分别)
/opt/Tomcat/webapps/MyApp
C:/opt/Tomcat/webapps/MyApp
Webapp有一个Servlet,需要在以下位置处理来自OS文件系统的文件
/work/logs/<logfiles>
C:/work/logs/<logfiles>
在Windows上我可以指定C:/ work / logs,并且Servlet知道要获取这个绝对路径并且它工作正常。我怀疑是因为 C:一开始。我知道这是因为我测试了这个。
我真正的问题是......
在Linux上,如果没有驱动器号,如果我要求它查看/work/logs
,它会尝试查看相对路径:
/opt/Tomcat/webapps/MyApp/work/logs
或者它会在我希望的文件系统(/work/logs
)中查找吗?
我现在问这个问题,因为它最终会影响整体设计。
答案 0 :(得分:1)
Linux中的前导斜杠意味着&#34;绝对路径&#34;,因此您可以确定如果使用/work/logs/<something>
这样的路径,它会将其理解为绝对路径。
BTW如果你在Windows中使用相同的路径它将工作并使用当前磁盘,即如果tomcat的工作目录在C:
上,它将使用C:
驱动器,但是如果tomcat是在D:
上运行此驱动器将被使用。
答案 1 :(得分:1)
我可以建议使用CATALINA_HOME环境变量来查找放置配置的文件夹。对于我的项目,我有以下结构:
$CATALINA_HOME/appconfig/ <-- config
$CATALINA_HOME/webapps/somewar.war <-- your webapps
在appconfig中,我将放置一些somewar.properties,它作为该服务器的配置。 (我还放置log4j.properties,以及特定于您运行的服务器实例的特殊证书/其他内容,但我尽量将其保持在最低限度) 由于将始终为您的项目设置CATALINA_HOME,因此可以重复使用。
在somewar.properties中我会列出work.path=/work/logs
使用/ work / logs可以在Linux和Windows上同时使用@AlexR提及(在他的答案中更多)但你可能会遇到麻烦,因为你需要root访问才能创建/工作文件夹。这取决于谁在管理服务器以及它们有多严格。 我更喜欢配置解决方案,所以如果你最终在一台不能让你使用某个位置的机器上工作,你可以切换。当然,你需要被允许在CATALINA_HOME中写字;)