使用共享资源部署战争文件

时间:2008-12-30 21:07:04

标签: java web-deployment

考虑以下示例结构

- Project
    - www
        - files
            + documents
            + html
            + images
            + scripts
    - WEB-INF
        * web.xml

文档文件夹需要是符号链接或以其他方式外部来自war文件,因为用户将添加和删除文档(通过映射的网络驱动器)。

我想将webapp部署为war-file,但我不知道如何做到并将上述内容考虑在内。你能指点一下吗? /亚当

9 个答案:

答案 0 :(得分:1)

如果它是静态内容,也许您最好使用Web服务器将应用服务器面向前方,并将静态内容放在那里。您减轻了应用服务器必须提供静态数据并保存网络往返以启动。

答案 1 :(得分:1)

我同意@ duffymo.myopenid.com认为,使用为某些网址前缀提供静态内容的网络服务器为您的应用服务器提供支持是一个很好的,干净的解决方案。

如果这在您的环境中不可行,或者您决定在Web应用程序本身中处理它,那么您可以编写一个有效执行相同操作的servlet。例如,创建一个映射到URL模式/ documents / *的servlet。此servlet可以解析URL(/documents/some/file.png)以确定相对文件名(some / file.png)。然后它可以读取并返回在外部目录(/staticDocs/some/file.png)中找到的相应内容。

答案 2 :(得分:0)

为什么不将文档等存储在数据库中,然后让web-app访问数据库并允许用户以这种方式提取文件?它必须是映射的网络驱动器吗?

否则,如果知道它是什么,你总是可以动态地构造jnlp文件并将文件列表等作为参数传递(如果它们是服务器端)。

猜猜我们需要更多地了解你想要完成的事情。

答案 3 :(得分:0)

基本上,它是一个webapp,它汇集来自各种来源的信息并生成文档。要求用户能够从网络手动创建和上载文档,而无需登录到webapp。

将文档位置路径作为上下文变量绝对可行。我想这是最简单的方法。 /亚当

答案 4 :(得分:0)

不幸的是,对你来说.war文件是.zip文件,而.zip文件不支持符号链接。如果您只是部署到Windows机器,您可能会有运气使用快捷方式文件。但是,我不确定app-server是否会喜欢(...可能不会。)

我建议在应用程序中添加一个配置参数,以允许在那里指定文档文件夹的完整路径。默认路径应该是相对的(“./www/files/documents”),以便应用程序开箱即用,无需额外配置。

答案 5 :(得分:0)

许多Java Web服务器支持“爆炸战争文件”,您只需将.war文件解压缩到部署目录中。使用tomcat,您可以将其复制到$CATALINA_HOME/webapps,然后就完成了。

这应该适合你。

答案 6 :(得分:0)

如何在服务器上创建指向存储文件的目录的环境变量?环境变量可能比WAR文件中的设置更好,因为您可以在新环境中部署应用程序(可能从DEV移动到PROD)而不更改WAR文件。

从您的Java代码中,您可以使用以下命令引用此环境设置: String docPath = System.getProperty(“DOC_PATH”);

答案 7 :(得分:0)

在Apache Tomcat中,有时候通过tomcat RewriteValve实现重用是合适的:

META-INF / context.xml中:

<Context>
  <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
</Context>

WEB-INF / rewrite.config:

RewriteRule (.*)/login(/.*\.)(png|jpg|js|css) $1$2$3 

现在/appContext/login/路径将使用与/appContext/相同的images / js / css

当然,对于任何问题的所有基于正则表达式的解决方案,将表达式的复杂性保持在低水平对于性能非常重要。

答案 8 :(得分:-1)

听起来您需要一个网络内容管理系统(CMS)。