Glassfish 3 - 从静态服务器加载图像

Chu*_*ham 2 glassfish-3

我正在尝试从部署到Glassfish v3的 Web应用程序之外的服务器加载图像(和其他静态内容).我在web.xml中有以下配置,但它不适用于Glassfish(但它适用于Tomcat):

<servlet>
    <servlet-name>ExternalImagesServlet</servlet-name>
    <servlet-class>com.example.servlet.HttpProxyServlet</servlet-class>
    <init-param>
        <param-name>RemoteURI</param-name>
        <param-value>http://ip.of.second.server/website-files</param-value>
    </init-param>   
    <init-param>
        <param-name>AllowedContentTypes</param-name>
        <param-value>image/gif,image/jpeg,image/png</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>ExternalImagesServlet</servlet-name>
    <url-pattern>/images/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

其中ip.of.second.server是服务器的实际IP地址.我有一个名为website-files.xml的文件定义如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="d:/internet/website/images" />
Run Code Online (Sandbox Code Playgroud)

并将website-files.xml保存到glassfish\domains\domain1\config目录.但是Glassfish没有拿起这个配置文件.

我看过Oracle Glassfish配置doco,但没有提到如何从不同的服务器引用图像.

请帮忙.

Chu*_*ham 5

我已经根据我在Google搜索了两天后在Google上找到的与Glassfish版本2相关的旧帖子解决了这个问题.

如果有人对解决方案感兴趣,这里是:

1)直接在Webcontent\WEB-INF目录下创建一个名为sun-web.xml的文件,并将以下配置添加到该文件中:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 Servlet 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
<sun-web-app>
   <property name="alternatedocroot_1" value="from=/images/* dir=d:/internet/website" />
   <property name="alternatedocroot_2" value="from=/files/* dir=d:/internet/website" />
</sun-web-app>
Run Code Online (Sandbox Code Playgroud)

2)从web.xml文件中删除servletservlet-mapping配置(就像我上面所做的那样).注意:如果您使用Tomcat,上述操作将起作用.

3)从glassfish\domains\domain1\config目录中删除website-files.xml,因为Glassfish不需要此文件:注意:Tomcat需要此文件.