java - 在 Web 服务器上运行 Java

标签 java php web-applications servlets

我编写了一个独立的 Java 应用程序,我将其打包到一个 jar 文件中,该文件接受一些命令行参数,进行一些核心计算,然后将结果写入一个文件以及一些输出到默认输出流指向包含结果的文件所在的位置。

我现在想围绕这项技术创建一个网站。这个想法是用户可以填写一个 html 表单,将其发布到网页上,然后网页将调用 Java 应用程序,解析来自 Java 应用程序的结果,并将其显示给用户。

目前,我正在使用一些 PHP 从发布请求中收集数据,然后只使用一个 exec 调用:

java -jar -Xmx128m myapplication.jar command-line-arguments

这不好吗?

我的网站每天确实有数千次访问,每次执行 Java 应用程序可能需要 30 秒到 1 分钟以上,所以我不想效率太低。似乎有比必须为每个请求直接调用 Java 更好的解决方案。

我一直听到诸如 java servlet、bean、tomcat、glassfish 等之类的东西,但我不明白它们是什么以及它们对我有何好处。这些能给我带来什么?更快的结果是因为不必在每次运行应用程序时都创建 Java JVM?更少的内存使用?我显然希望它以尽可能少的内存占用尽可能快地运行。

那么,我在这里可以采用的最佳方法是什么?我不想对我的应用程序进行任何严重的重写,因为有很多代码(因此将它重写为 C 或 C++ 是不可能的)。


谢谢。

最佳答案

好的,servlet 是设计用于在容器内运行的小型应用程序。它们为您提供了一个扩展点,可以将您的 Java 代码插入到像 tomcat 这样的简单 servlet 容器中,或者像 glassfish 这样功能更齐全的应用程序服务器中。您想要这样做是因为应用程序服务器负责处理 http 交互并提供其他功能,如安全、日志记录、 session 管理、错误处理等(请参阅 servlet specification)。

当您让应用程序在应用程序容器(具有所有其他额外功能的网络服务器)中运行时,您还可以更好地管理应用程序的生命周期。您将能够在不关闭 Web 服务器、重新部署、启动更多实例等的情况下启动和停止该应用程序。另外,当您想出第二个出色的应用程序时,很容易将其放在第一个应用程序的旁边.或者,您可以将多台机器集群在一起,以实现应用服务器的简单冗余和负载平衡功能。

这只是一个开始,还有更多功能、技术和框架可以帮助您制作基于容器的应用程序。 Servlet tutorial .

关于java - 在 Web 服务器上运行 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624749/

相关文章:

php - 带有来自服务器(php)的图像的Android Firebase推送通知在应用程序处于后台时未在通知中显示图像

Java EE 应用程序服务器和 Perl 脚本

java - JBoss AS 7 远程独立客户端身份验证

Java System.loadLibrary 依赖项

php - 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

php - 使用 phalcon 检查数据库中是否存在电子邮件

java - JPA事务异常获取真正原因 - 嵌套异常

java - SQLite 数据库打开时崩溃

java - 如何在我的 Java Web 应用程序中运行 websocket 客户端

java - 使用 proguard 处理时,不会生成 war 文件的 WEB-INF 中的类文件