Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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
PHP调用java应用程序_Java_Php_Ipc - Fatal编程技术网

PHP调用java应用程序

PHP调用java应用程序,java,php,ipc,Java,Php,Ipc,我有一个关于我的网络项目的问题 以前,当我的教授问我如何做一个在线判断应用程序时,我选择使用php而不是JavaServlet来实现它,因为我认为JavaServlet相当复杂 然后问题来了。对于在线判断,我必须使用服务器上的后端java程序来处理用户提交的代码。也就是说,每次用户提交某个内容时,php都会调用java虚拟机并调用java应用程序。然而,要调用java应用程序,我现在的方法是使用命令行 popen(“start java-jar\”$FILE\u ROOT/OnlineJudge

我有一个关于我的网络项目的问题

以前,当我的教授问我如何做一个在线判断应用程序时,我选择使用php而不是JavaServlet来实现它,因为我认为JavaServlet相当复杂

然后问题来了。对于在线判断,我必须使用服务器上的后端java程序来处理用户提交的代码。也就是说,每次用户提交某个内容时,php都会调用java虚拟机并调用java应用程序。然而,要调用java应用程序,我现在的方法是使用命令行 popen(“start java-jar\”$FILE\u ROOT/OnlineJudge.jar\”,“r”)

这很好,但考虑到java虚拟机的加载,它实际上非常慢而且容易出错。所以我想知道PHP是否有更好的方法来调用服务器上的本地java程序。因为后来我发现我仍然需要从php调用更多java

任何想法都将不胜感激。谢谢。

您是否考虑过,这非常有用,它使用XML在php和java之间进行通信

您需要启动JVM一次,桥接组件将有助于通信


下面是一些示例,您可以找到一个连接php和java的简单示例,还可以查看命令行执行的示例。我用它来关闭我的计算机,在晚上完成了一项很长的任务。

根据java应用程序的编写方式,将其转换为servlet可能不会太难。一旦它是一个servlet,在jetty或tomcat下运行它,然后让您的php通过CURL连接到它,并从servlet中输入/获取数据

Java servlet相当简单。如果您使用的是像Spring这样的外部框架,它会变得更容易,但如果不是,您只需要扩展它,然后在web.xml中配置它


这是一个小技巧,但不会花费你太长的时间来完成。

你也可以用PHP编写整个后端,没有理由你不能这样做。你选择不在Java中首先这样做会给你带来更多的问题。此外,您的教授可能希望您首先将前端实现为servlet,以了解Java servlet。理想情况下,您应该扔掉PHP前端,用Java重新实现它。顺便说一句,启动JVM可能很慢,但不应该容易出错。(只有在你不知道自己在做什么的情况下才容易出错,而且你应该知道这一点。)谢谢你的回复。实际上,因为我对JavaServlet的了解非常有限,当时我认为对servlet的学习曲线应该比PHP更陡峭,所以选择了PHP。但现在所有前端都是php,扔掉它可能会花费我太多的精力。我知道php可以处理数据库和文件,但我更喜欢使用java,因为它看起来更健壮。是的,我知道这种方法。实际上,它调用命令行或bash命令。它的缺点是每次请求调用java时都会启动JVM。谢谢你的建议。不使用诸如JBoss或Tomcat之类的J2EE应用服务器,是否可以简单地使用LAMP设置PHP java桥?因为我发现安装指南相当复杂。是的,你需要单独启动JVM来做一个示例(第9点)。实际上,现在我正在和一些同学一起进行php调试。如果我建议将整个内容转换为java servlet(我知道它可能很健壮),他们会想杀了我,因为这样做还需要几周的时间,而且似乎要重新做这项工作……实际上,我不是建议你将整个内容转换为java servlet;那将是太多的工作了。我只是建议将java应用程序包装在servlet中。考虑到您正在谈论从命令行调用它,我自然地认为您有一个用于应用程序的jar。因此,通过servlet调用“主”入口点是一个相当简单的过程。如果您对这个概念感兴趣,请告诉我,如果您需要,我可以提供更多信息。