如何使用Glassfish从JSF应用程序提供静态网页

Kev*_*ahe 2 jsf glassfish-3

我有一个在Glassfish 3.1.1下运行的JSF 2.0应用程序,我需要提供静态网页,这些网页在物理上位于我的部署WAR文件时创建的应用程序根目录之外.我已经找到了各种引用(比如这一个这一个)来定义一个使用标签的备用docroot

<property name="alternatedocroot_1" value="from=/myimages/* dir=/images"/>
Run Code Online (Sandbox Code Playgroud)

添加到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>
Run Code Online (Sandbox Code Playgroud)

我的应用程序定义的内容似乎在web.xml中比glassfish-web.xml更多.我是否可能需要在那里放一些东西来引用备用docroot?

Bal*_*usC 5

这种确切的配置需要一个/images/myimages相对于运行Web服务器JVM的同一磁盘的绝对根目录的文件foo.pnghttp://localhost:8080/contextname/myimages/foo.png.然后,该文件夹中的文件可用.

围绕此设置的常见混淆是该from属性被解释为URL中的上下文路径,而不是该dir位置中的实际子文件夹.但事实并非如此.

如果你在Windows环境下运行的Glassfish,那么你需要指定的盘符中dir还有像这样dir=C:/images.