我编写了一个独立的Java应用程序,我将其打包到一个jar文件中,该文件接受一些命令行参数,执行一些硬核计算,然后将结果写入文件以及一些输出到指向哪里的默认输出流结果的文件是.
我现在想要围绕这项技术创建一个网站.想法是用户可以填写html表单,将其发布到网页,然后调用Java应用程序,从Java应用程序解析结果,并将其显示给用户.
目前,我使用一点点PHP从post请求中收集数据,然后只使用exec调用:
java -jar -Xmx128m myapplication.jar command-line-arguments
我每天都有几千次访问我的网站,每次执行Java应用程序的时间可能超过30秒到一分钟,所以我不想过于低效.似乎有一种更好的解决方案,而不是直接为每个请求调用Java.
我一直听到像java servlets,bean,tomcat,glassfish等的东西,但我不明白它们是什么以及它们将如何使我受益.这些对我有什么影响?结果更快,因为每次运行应用程序时都不必创建Java JVM?减少内存使用量?我显然希望它以尽可能少的内存占用尽可能快地运行.
那么,我能在这里采取的最佳方法是什么?我不想对我的应用程序进行任何认真的重写,因为有很多代码(因此将其重写为C或C++是不可能的).
谢谢.
好吧,servlet是设计用于在容器内运行的小型应用程序.它们为您提供了一个扩展点,您可以将Java代码插入到像tomcat这样的简单servlet容器中,或者像glassfish这样的功能更全面的应用程序服务器中.您希望这样做是因为应用程序服务器完成了处理http交互的繁重工作,并提供了其他功能,如安全性,日志记录,会话管理,错误处理等(请参阅servlet规范).
当您在应用程序内容(具有所有其他额外功能的Web服务器)中使您的应用程序生效时,您还可以更好地管理应用程序的生命周期.您可以在不关闭Web服务器,重新部署,启动更多实例等的情况下启动和停止应用程序.此外,当您提出第二个应用程序时,它很容易将其放在第一个应用程序旁边.或者,您可以将多台计算机集群在一起,以实现应用程序服务器的简单冗余和负载平衡功能.
这只是一个开始,还有更多的功能,技术和框架可以帮助您制作基于容器的应用程序.Servlet教程.