我在客户端将Orbeon从4.6升级到4.10。为了确保轻松升级,我们将所有资源文件放在war文件之外的文件夹中,如"Setting up an external resources directory"中所述。
来自server.xml的我的上下文如下所示:
<Context
path="/blanketmotor/orbeon"
docBase="/orbeon"
reloadable="false"
override="false"
allowLinking="true">
<Parameter override="false" name="oxf.resources.priority.0"
value="org.orbeon.oxf.resources.FilesystemResourceManagerFactory"/>
<Parameter override="false"
name="oxf.resources.priority.0.oxf.resources.filesystem.sandbox-directory"
value="C:\Users\ewp\IdeaProjects\blanketservice_src\Tools\konfiguration\version410\local\resources-blanketmotor"/>
</Context>
Orbeon从指定的文件夹(properties-local.xml
,log4j.xml
等)加载所有文件。但是,它表示它无法找到license.xml
- 即使它被放置在文件夹中,因为此search from PowerShell显示。
Orbeon给我的例外情况如下:
C:\Users\ewp\.orbeon\license.xml (The system cannot find the path specified)
Exception: java.io.FileNotFoundException
似乎首先转向主目录选项。当它在这里找不到license.xml时,它会在不尝试指定任何其他资源的情况下放弃。不幸的是,我不能将license.xml放在home-dir中。
有谁知道如何让Orbeon知道我资源文件夹中的license.xml文件?
答案 0 :(得分:0)
我发现造成错误的原因是路径和docBase的组合阻止了Orbeon查找license.xml文件。
我把Orbeon放在一个名为&#34; orbeon&#34;的文件夹中。并设置以下上下文:
<Context path="/blanketmotor/orbeon" docBase="orbeon" ... >
<Parameter ....>
</Context>
因为Tomcat默认主机设置是autoDeploy =&#34; true&#34; deployOnStartup =&#34; true&#34;,Tomcat将部署放在Webapps文件夹中的autodeploy文件夹。因此,Orbeon正在部署&#34; / blanketmotor / orbeon&#34; (正如我告诉它做的那样)并自动部署上下文&#34; / orbeon&#34;。
由于没有为上下文&#34; / orbeon&#34;覆盖任何参数,Orbeon试图在我的主文件夹中找到license.xml。
为了使上述设置起作用,必须将autoDeploy和deployOnStartup都设置为true。否则将进行双重部署:
如果要使用与基本文件名无关的上下文路径部署WAR文件或目录,则必须使用以下选项之一来防止双重部署(取自Tomcat文档):
- 禁用autoDeploy和deployOnStartup并在server.xml中定义所有上下文
- 在Host的appBase之外找到WAR和/或目录,并使用带有docBase属性的context.xml文件来定义它。