为什么Tomcat安装在Web应用程序的项目目录中(java)

时间:2016-01-12 07:24:13

标签: tomcat java-ee

我已经看到了几个(或更多)实时Web应用程序项目结构和 我注意到tomcat文件夹结构已放置在Web应用程序项目文件夹 中。我理解一点,如果我们在构建项目时使用任何构建工具(如maven或ant),那么构建将直接将我们对项目所做的更改发布到放置在当前项目目录中的tomcat。

所以我的问题/好奇心是遵循这种方法的其他优点。如果他们必须在同一系统中构建另一个Web应用程序,应该遵循什么方法?我是否需要使用不同的端口号在我的第二个Web项目中创建另一个tomcat实例,或者我应该配置(我不知道该怎么做)我的第二个项目将应用程序构建到第一个应用程序的同一个Tomcat?

遵循这种方法有哪些优点和缺点?

2 个答案:

答案 0 :(得分:1)

您只需在运行tomcat目录的 webbapps 文件夹中添加另一个战争。在您的默认网址上将是名为ROOT(ROOT.war)的应用程序,例如。 address:8080/,另一个对tmp.war来说就像/ tmp一样。address:8080/tmp Tomcat可以处理很多单独的应用程序。

利弊?

如果您为更多应用程序共享tomcat,则必须考虑更多应用程序意味着更多资源(内存,CPU使用率等)并且共享此资源。如果您需要使用需要大量资源的应用程序,而不是将应用程序部署到单独服务器上的tomcat上。

还要考虑是否要为一个应用程序重新启动tomcat,每个应用程序都将不可用。更多的应用程序意味着tomcat的启动时间更长。

答案 1 :(得分:1)

<强>赞成

少量代码,少量库

当我们在tomcat中使用两个或更多项目时,它可以在tomcat / lib文件夹中使用相同的库。如果我们只需要Oracle JDBC Driver进行连接,我们可以将这个jar添加到lib文件夹,所有应用程序都使用它。对于MAVEN也很好。 (但不要忘记:你必须将maven或其他库导入tomcat lib文件夹,如果你把它们的应用程序路径放到其他应用程序无法读取的地方)

减少管理

只有一个tomcat,一个错误日志,一个系统日志。你不需要搜索其他的tomcats。一个tomcat文件夹(控制台)中的所有信息。

单独的服务器

您可以将一个tomcat与单独的服务器一起使用,并且可以定义在哪个服务器中运行哪个应用程序。

缺点

内存泄漏

在一个tomcat中,更多应用程序意味着更多内存请求。您可以使用某些属性定义内存大小,但有时tomcat无法处理内存泄漏并停止。

启动时间慢

更多应用意味着更多初始化时间。当你启动tomcat时,它必须运行所有应用程序。

复杂性

我们认为您需要为映射定义RewriteRule。如果您有两个应用程序,则要小心其他应用程序。它可以定义为映射,身份验证,URL转发,URL阻止等。

你也找不到日志。哪个日志属于哪个应用程序(你可以使用log4j,或者你可以使用单独的服务器)

应用程序是单独的,但它们也是附加的

当您在公共库中失败时,所有应用程序都将失败。当您编写while(true)时,所有应用程序都会很慢并因内存泄漏而关闭。