我正在尝试从部署到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,但没有提到如何从不同的服务器引用图像.
请帮忙.
我已经根据我在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文件中删除servlet和servlet-mapping配置(就像我上面所做的那样).注意:如果您使用Tomcat,上述操作将起作用.
3)从glassfish\domains\domain1\config目录中删除website-files.xml,因为Glassfish不需要此文件:注意:Tomcat需要此文件.
| 归档时间: |
|
| 查看次数: |
4127 次 |
| 最近记录: |