我有一个在Glassfish 3.1.1下运行的JSF 2.0应用程序,我需要提供物理上位于我的部署WAR文件时创建的应用程序根目录的静态网页。我找到了各种引用(例如this one和this one)来使用标记来定义备用docroot,例如
<property name="alternatedocroot_1" value="from=/myimages/* dir=/images"/>
添加到sun-web.xml(我认为这意味着Glassfish 3.1.1中的glassfish-web.xml)。但是,我似乎无法让它工作。就我而言,我认为问题在于glassfish-web.xml根本没有为备用docroot定义足够的上下文来表达任何含义:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
<description>Keep a copy of the generated servlet class' java code.</description>
</property>
</jsp-config>
<property name="alternatedocroot_1" value="from=/myimages/* dir=/images"/>
</glassfish-web-app>
我的应用程序定义的内容似乎在web.xml中比glassfish-web.xml更多。我是否可能需要在那里放一些东西来引用备用docroot?
答案 0 :(得分:5)
这个确切的配置需要一个/images/myimages
文件夹,该文件夹相对于运行Web服务器JVM的同一磁盘的绝对根目录。然后foo.png
中的文件http://localhost:8080/contextname/myimages/foo.png
可用于{{} 1}}。
围绕此设置的常见错误是from
属性被解释为URL中的上下文路径,而不是dir
位置中的实际子文件夹。但事实并非如此。
如果您在Windows环境中运行Glassfish,则需要在dir
中指定磁盘字母,以及dir=C:/images
。