Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaWeb应用程序中同时使用http服务器和应用程序服务器_Java_Jakarta Ee_Deployment_Web - Fatal编程技术网

如何在JavaWeb应用程序中同时使用http服务器和应用程序服务器

如何在JavaWeb应用程序中同时使用http服务器和应用程序服务器,java,jakarta-ee,deployment,web,Java,Jakarta Ee,Deployment,Web,我有一些关于JavaEEWeb应用程序的部署模型问题。目前,我们正在Tomcat6中将web应用程序部署为WAR文件。所有内容都打包在WAR文件中,包括静态内容,如图像、静态html页面等。但我想在HTTP服务器中部署这些静态内容,并仅使用应用程序服务器检索动态内容。我如何分割这些东西?是否有人做过这类事情,并为我的场景提供了一个良好的部署模型。我们将不胜感激 将两个WAR文件制作成一个只有静态内容的文件,并在HTTP服务器中部署该WAR,将其余文件作为不同的WAR文件部署在应用服务器中,这是一

我有一些关于JavaEEWeb应用程序的部署模型问题。目前,我们正在Tomcat6中将web应用程序部署为WAR文件。所有内容都打包在WAR文件中,包括静态内容,如图像、静态html页面等。但我想在HTTP服务器中部署这些静态内容,并仅使用应用程序服务器检索动态内容。我如何分割这些东西?是否有人做过这类事情,并为我的场景提供了一个良好的部署模型。我们将不胜感激

将两个WAR文件制作成一个只有静态内容的文件,并在HTTP服务器中部署该WAR,将其余文件作为不同的WAR文件部署在应用服务器中,这是一个好主意吗?但是,这种方法将对当前引用静态内容的所有页面产生影响,并且需要更改代码,这非常麻烦,因为我们的项目非常庞大,并且基于代码的页面非常庞大


欢迎任何策略和想法。

您不能将
WAR
文件部署到
HTTP
服务器中。
WAR
用于
Java
web应用程序,它必须部署到应用程序服务器或servlet容器中(如
Tomcat
)。我认为在单独的web应用程序中分离静态内容不是一个好主意。如果这是一个项目,它应该是一个web应用程序,此外:

WAR文件具有特殊的文件夹结构并包含特殊的文件 除了JSP页面、Java servlet、Java类、HTML页面等。 它们组合在一起形成了一个Web应用程序

您可以将静态内容保存在一个应用程序中,这并没有什么不好的


如果你的项目非常庞大,并且有很多文件,这是没有问题的,你只需要使用这样的项目结构,它应该易于理解和阅读,并且应用服务器或servlet容器将负责部署尽可能多的内容。

出于性能原因,这可能是一件有趣的事情

您应该有单独的部署脚本/部署文件来执行此操作。 为一个项目部署多个文件/WAR/文件夹/脚本不是问题。当您必须部署您的WAR并更新您的数据库时,我们有同样的事情

我会有一个WAR文件和一个包含静态内容的文件夹来部署


编辑

在HTTP服务器中部署静态内容取决于服务器。 如果要在Linux服务器上使用,必须设置一个


#第一个列出的虚拟主机也是*:80的默认主机
服务器名www.example.com
DocumentRoot/www/domain
在本例中,您有一个虚拟主机,它在
80
端口上侦听任何IP地址和服务器名
www.example.com
。然后将其重定向到
/www/domain
路径


您将在文档中找到更多的示例和配置选项。

在版本4之前,Tomcat在提供静态内容方面相当缓慢。这就是为什么经常建议将动态内容与静态内容分离,并使用常规web服务器为后者提供服务的原因(您提到的书是2002年发行的…)。最近的Tomcat版本没有遇到这个问题,因此您可以避免拆分,这对组织和安全来说都是一场噩梦


对于静态资源,您可能更愿意将重点放在配置适当的缓存上,这样它们就不会被过度传输。

为什么要拆分静态和动态内容?这是一个组织的考虑还是你想提高绩效?谢谢你的评论,我感谢每一个人的评论。很好的学习曲线。我想同时使用HTTP服务器和应用服务器来提高web应用程序的性能。我一直在读一本名为《Java性能分析》的书™ “网站”现在已经有一段时间了。它建议我把静态内容放在HTTP服务器上,把动态内容放在应用服务器上。但我不知道如何切实做到这一点。我只知道如何构建WAR文件并在Tomcat中部署,Tomcat是我们用于部署的应用服务器。如何在HTTP服务器中部署静态内容?如果我在这方面得到一些帮助,那么我可以继续从WAR文件中删除所有静态内容,并将其部署在HTTP服务器中,以及WAR中的其他文件部署在应用服务器中。您只需设置一个Apache服务器或类似服务器,并将所有图像/css/js/其他静态内容(而不是JSP/JSF)放在其配置的文件夹中。我不建议这样做,我非常怀疑任何性能的提高是否会被注意到,特别是如果它只是几个css/js/image文件的话。无论如何,这些都缓存在客户端web浏览器上,所以这不是什么大问题,而您需要做更多的工作来设置和维护它。我可以想象的一个接近于好主意的场景是,如果您提供大量大型文件,那么如何在HTTP服务器中部署静态内容?如果我在这方面得到一些帮助,那么我可以继续从WAR文件中删除所有静态内容,并将其部署在HTTP服务器中,以及WAR中的其他文件部署在应用程序服务器中。我感谢您的输入…但我的要求是将静态内容部署到HTTP服务器中,以提高web应用程序的性能。我不知道如何在HTTP服务器中捆绑和部署静态内容,以及如何从部署在Tomcat容器上的WAR文件中的JSP访问静态内容。在这方面的任何帮助都将是非常好的…是的,缓存是另一个领域,我也想看看。事实上,我们已经开始寻找常用的主表相关查询和一些缓存方法。一种方法是将这些查询的结果加载到内存中
<VirtualHost *:80>
  # This first-listed virtual host is also the default for *:80
  ServerName www.example.com
  DocumentRoot /www/domain
</VirtualHost>