如何正确使用Tomcat 7新别名?

时间:2012-10-22 11:00:34

标签: ubuntu static resources tomcat7 aliases

Tomcat 7提供了新的别名,允许在WAR文件之外存储静态内容。 我在http://www.developer.com/java/web/article.php/3904871/Top-7-Features-in-Tomcat-7-The-New-and-the-Improved.htm第4部分中找到了一些说明。

但它对我不起作用。

我有两个上下文XML文件。一个用于我的应用程序(admin.xml),另一个用于我的静态资源(uploads.xml)。

我做了本教程中提到的所有内容,但Tomcat没有看到WAR文件之外的任何静态资源。

我的静态资源结构:

/home/user/admin-images/-
                   -234bF5_image/image.jpg
                   -572d44_otherImage/otherImage.jpg
                   -12A4uR_otherImage/otherImage.jpg

admin.xml的:

<Context path="/admin" 
        docBase="path/to/application/target" reloadable="false">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Manager pathname="admin" />
</Context>

uploads.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/admin" aliases="/images=/home/user/admin-images">

</Context>

在上下文部署图像后无法访问:

http://localhost:8080/admin/images/234bF5_image/image.jpg

当我尝试达到此目的时,我收到无法显示图像的错误。

2 个答案:

答案 0 :(得分:5)

我无法让它发挥作用。但我找到了另一种在Web应用程序之外提供静态图像的解决方案。

您需要在Tomcat配置中的server.xml中定义上下文:

server.xml(这必须进入'Host'标签):

...
...
<Host>
    ...
    ...
    <Context docBase="/home/user/admin-images/" path="/images" />
    ...
    ...
</Host>
...
...

这样我就可以达到这样的静态图像: [HTTP://本地主机:8080 /管理/图像/ 234bF5_image / image.jpg的]

我的新问题是: 这种共享静态资源的方式是安全的吗?它有什么缺点吗?

答案 1 :(得分:1)

我设法使用别名来处理这个问题:

<?xml version="1.0" encoding="UTF-8"?>
<Context aliases="/the_alias_path=/path/to/a/file/or/folder/on/your/disk,another_alias_path=/path/to/another/file/or/folder/on/your/disk" antiJARLocking="true" path="/your/app/context"/>