PHP / Java Bridge - 在PHP中访问Java对象

时间:2012-10-08 13:45:36

标签: java php red5

我有一个Red5应用程序,它定义了一些公共Java方法。当我启动服务器时,会创建应用程序类的对象。我试图使用现有的Java应用程序类实例从PHP调用应用程序类的公共方法。

所以这是我的Java应用程序:

public class App extends org.red5.server.adapter.ApplicationAdapter
{
    public boolean appStart(IScope app)
    {
        // This method gets called when the application starts
        // and an object of this App class is created.
        return true;
    }

    // This is the method I would like to call from PHP.
    public void f()
    {
    }
}

从PHP开始,我希望能够访问创建的App对象并在其上调用方法f()

我试过玩这个叫做“上下文”的东西。所以在Java方法App.appStart()中,我这样做了:

// Save a reference to this App object to be retrieved later in PHP.
new PhpScriptContextFactory().getContext().put("x", this);

在PHP中,我试图像这样访问保存的对象:

require_once("http://localhost:5080/JavaBridge/java/Java.inc");
var_dump(java_is_null(java_context()->get("x")));

不幸的是,PHP中的java_is_null()函数返回true

我还尝试将App对象保存在App类的静态变量中,但是当我在PHP中访问该变量时,其值为null

4 个答案:

答案 0 :(得分:1)

我认为你的帖子相当不完整,因为我们看不到JavaBridege / java / Java.inc的样子。

第二个疑问是关于你在这里尝试做什么。你想从PHP调用Java函数?为什么不创建一个触发对Application的调用的简单Servlet。然后,您可以访问Servlet的URL并通过cURL执行调用。

根本不建议调用Java函数“raw”,我的意思是将此函数加载到JVM中,您应该在Java程序中提供API来访问此代码或方法。请记住,此Java代码已加载到Apache Tomcat中,并通过Spring作为Red5框架的一部分加载。所以它更像是一个简单的Java类。我怀疑是否可以按照你提出的方式在ApplicationAdapter中触发一个方法。

塞巴斯蒂安

答案 1 :(得分:1)

我遇到了一个允许您从PHP客户端连接到Red5应用程序的库。我现在使用它而不是PHP / Java Bridge。您可以在此处找到它:code.google.com/p/php-rtmp-client

答案 2 :(得分:0)

我认为您的PHP Web服务器无法加载Java.inc。

请按照以下步骤检查,它对我有用

http://php-java-bridge.sourceforge.net/pjb/desktop-apps.php

答案 3 :(得分:0)

很少有技术可以帮助您 php / Java桥,  肥皂, Zend的供应商特定框架或Caucho的J2EE应用服务器, IBM的Eclipse零框架

我推荐php / java bridge。