一遍又一遍地从命令行运行 java

一遍又一遍地从命令行运行 java

我有一个 PHP 应用程序,它调用命令行来执行一些特定的操作。

命令行调用'java -jar somefile.jar arg1 arg2'

问题是这很慢,因为每次调用时它都必须启动 jar。

有什么方法可以将 Java 机器代码保存在缓存中,或者有什么方法可以优化整个过程?

谢谢,乔尔

更新:该 JAR 由我们的团队开发。

要用作服务,我必须安装一些 java 服务器(tomcat 或类似服务器),对吗?

那么 Java php 桥接器怎么样?它还能更快吗?

答案1

如果您通过命令行执行此操作,则实际上是启动了另一个可执行程序(“java”),因此您无法对其进行任何控制。

您需要的是一个可以接收请求并处理请求的服务(在 Windows 中)或守护进程(在 Linux 中);如果不知道 Java 应用程序内部的操作,我们就无法提供解决方案。

更新

强烈取决于应用程序正在做什么。
完全可以将 Java 应用程序作为服务运行并处理请求,例如通过在网络套接字上监听请求并通过同一套接字返回其输出。Java
应用程序服务器(如 Tomcat)通常涉及动态网页生成,而不是“纯”数据处理。

无论如何,Java 应用程序应该重新设计才能像那样工作;您不能只拿一些想要通过命令行调用一次的东西,然后在不进行任何修改的情况下将其用作后端服务。

答案2

好吧,没有任何方法可以让你拥有的命令行运行得更快。该命令将加载 jvm、运行代码,然后卸载所有内容。这就是它所做的。

我可能会尝试设置 SOAP 服务或类似的东西。或者您可以让 Java 应用程序绑定套接字,然后通过这种方式与 php 连接。

您对 Java 程序有多少控制权?您是否只能保持原样?

答案3

您可以使用Nailgun来避免JVM的启动开销。

http://martiansoftware.com/nailgun/index.html

相关内容