【问题标题】:How best to package a website如何最好地打包网站
【发布时间】:2010-11-03 01:09:48
【问题描述】:

我正在开发一个在 Tomcat 中运行的网站,该网站存储了大量成员数据,但我不确定如何最好地打包它。

我希望能够轻松部署战争,而无需先从中删除任何东西。

我的第一个想法是在战争之外将成员数据分解到自己的目录中,但我的问题是其中一些内容需要在网站中链接(图像等)。

必须有比部署战争然后复制数据更好的解决方案。有人有什么建议吗?

【问题讨论】:

  • 我们所说的“会员数据”是什么样的?用户上传的东西?为运行 Web 应用程序的不同客户端进行自定义?您的问题尚不清楚何时以及为何会从应用程序中删除/添加此“成员数据”。
  • 是的,这是用户上传的内容。我想删除它,这样我就可以在不修改它的情况下部署未爆炸的战争。
  • 部署前怎么会有用户上传的内容?
  • 该网站已经上线,但我们仍在对其进行更改。
  • 啊,我想现在我明白了:您希望能够部署新版本的 WAR 而不用空目录覆盖您的用户数据?

标签: java tomcat war


【解决方案1】:

你的第一个想法是正确的。将数据存储在外部目录中是最好的解决方案。您可以通过创建可根据图像请求访问该外部目录的 servlet 轻松解决图像问题。

我无法发布我的代码,但这里有一个类似的创建响应的 sn-p。您只需要创建扩展 FileServlet 的类并编写代码来从您的目录加载文件。

http://snippets.dzone.com/posts/show/4629

然后,将其添加到您的 web.xml:

<servlet>
    <servlet-name>My File Servlet</servlet-name>
    <servlet-class>my.package.FileServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>My File Servlet</servlet-name>
    <url-pattern>/upload/*</url-pattern>
</servlet-mapping>

http://myapp.com/upload/userimage.jpg 这样的每个链接都将由servlet 创建

【讨论】:

  • 这就是我的想法,但是我想不出servlet怎么做。比如说,我将成员目录拆分为 /usr/members。如果我尝试在那里返回链接,容器将无法找到它。那么我需要在 servlet 中做什么呢?
【解决方案2】:

您绝对应该将数据与应用程序分开。由于我不确定您最初放置成员数据(显然是图像和其他内容)的原因,我可以根据更理想的环境提供建议。

如果您要存储许多不同人的信息,并且需要在多个地方访问这些信息,那么您为什么不选择使用数据库呢?甚至可能是 PostgreSQL 或 MySQL 之类的免费软件?

如果您将数据存储在数据库中,则很容易通过 java 检索,或者使用像 Hibernate 这样的 ORM,或者只使用一些基本的 JDBC 库。这假设您了解 SQL 和 Java 中的数据库层。

然后,如果您需要访问某些文件,您可以创建一个面向服务的体系结构 (SOA) 并使用一个安静的 Web 服务从一个 url 中提取图像。这将允许将存储卸载到您信任区域中的另一台机器上。

如果没有关于问题和服务器设置的更多详细信息,很难提供一个好的解决方案。

【讨论】:

  • 我们已经在使用数据库来存储成员数据,但需要文件存储来存储图像等内容。至于为什么会这样,好吧,这不是我的选择。我认为这样做是为了方便访问网站上显示的图像。
猜你喜欢
  • 1970-01-01
  • 2010-09-24
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2010-12-09
  • 2010-11-11
  • 1970-01-01
相关资源
最近更新 更多