使用Java从一个Web应用程序运行多个站点

时间:2009-10-02 10:14:06

标签: java java-ee

我正在思考drupal multisite的内容,每个网站都应该有主题,插件和各种静态文件的文件夹。事实证明,用Java做起来并不容易:类必须在一个地方,其他的标签文件,第三个静态文件,只有jsp文件可以去任何地方。类和标签可以打包在jar中,但是如何从jar提供静态文件和jsps?做这种事的最好方法是什么?

上一个稍微相关的问题:Jsp tags outside WEB-INF/tags

2 个答案:

答案 0 :(得分:1)

默认情况下,大多数servlet容器中的静态文件都是从WEB-INF以外的任何地方提供的,与JSP相同(除了未解释)。

您可以通过编写一个小的servlet来加载来自jar的静态文件,该servlet将它们作为资源加载(使用例如Class.loadResourceAsStream())并将它们写在ServletOutputStream上。

我不知道drupal,但听起来像Java中的等价物是Web应用程序,它可以捆绑为WAR存档(http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html

答案 1 :(得分:0)

不要真正理解你的问题。我从同一个webapp运行多站点,打包为单个战争。

我的WAR组织如下,

myapp/WEB-INF
myapp/common
myapp/site1
myapp/site2

所有类别,TLD都是共享的,但有两个网站拥有完全不同的品牌,主题等。网站特定文件会转到他们自己的目录。他们共享许多静态文件,如JavaScript和图像。这些文件存储在公共文件下,可以使用每个站点的相对URL进行引用,例如

  ../common/images/cart.jpg

整个内容作为单个WAR提供,并作为单个应用程序运行。该网站位于

http://example.com/myapp/site1

我们还有一个带有mod_rewrite的Apache前端,并且这些站点也可用作

  http://site1.example.com
  http://site2.example.com