0

Consider the following example structure

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

The documents folder needs to be a symlink or in some other way external from the war file because users will add and remove documents (through a mapped network drive).

I'd like to deploy the webapp as a war-file but I don't know how to do that and take the above into account. Could you give some pointers? /Adam

4

9 回答 9

1

我同意@duffymo.myopenid.com 的观点,即在您的应用服务器前面使用为某些 URL 前缀提供静态内容的 Web 服务器是一个很好、干净的解决方案。

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

于 2008-12-30T23:49:50.287 回答
1

如果它是静态内容,也许你最好在你的应用服务器前面放置一个 Web 服务器并将静态内容放在那里。您可以让应用服务器不必提供静态数据并保存网络往返以启动。

于 2008-12-30T21:12:49.947 回答
0

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

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

于 2008-12-31T14:55:49.663 回答
0

基本上,它是一个网络应用程序,可以聚合来自各种来源的信息并生成文档。要求用户能够在不登录 webapp 的情况下从网络手动创建和上传文档。

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

于 2008-12-31T02:48:46.807 回答
0

不幸的是,对您而言,.war 文件本质上是 .zip 文件,而 .zip 文件不支持符号链接。如果您只部署到 Windows 机器,您可能会幸运地使用快捷方式文件。但是,我不确定应用服务器是否会喜欢这样(......可能不会。)

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

于 2008-12-31T08:27:05.237 回答
0

许多 java web 服务器支持“exploded war files”,您只需将 .war 文件解压缩到部署目录中即可。使用 tomcat 将其复制到$CATALINA_HOME/webapps并完成。

这应该适合你。

于 2008-12-31T09:20:01.010 回答
0

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

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

猜猜我们需要更多地了解您要完成的工作。

于 2008-12-30T21:19:07.173 回答
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/路径将使用相同的 images/js/css/appContext/

当然,与任何问题的所有基于正则表达式的解决方案一样,保持表达式的低复杂性对性能很重要。

于 2016-06-04T18:42:09.900 回答
-1

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

于 2008-12-30T21:14:02.940 回答