我有两台机器:
- 首先使用PHP+Apache for WebApp(
10.1.1.33
) - 第二个是Glassfish,用于后端任务和报告等(
10.1.1.34
)
第一台机器(Apache)可以从第二台机器(Glassfish)访问Java.inc文件
http://10.1.1.34:8080/projectname/java/Java.inc
有一个防火墙设置,允许8080
从Apache
(10.1.1.33
)计算机访问Glassfish
(10.1.1.34
)计算机。我认为这就是为什么Java.inc
是可访问的,但PHP-Java-Bridge
为其余通信保留了一个单独的端口。除非添加特定的保留端口,否则我的应用程序将无法工作。作为一个变通办法,我添加了一条规则,允许Apache机器上的任何端口。
allow 0-65535 from 10.1.1.33
这似乎不是一个好主意,因为我必须关闭所有端口,只允许真正需要的端口。
Java端配置以下jar文件被复制到Java Web Project的lib文件夹中。
- JavaBridge.jar
- php-script.jar
- php-servlet.jar
以下是桥梁设置网络项目web.xml
的一部分
<listener>
<listener-class>php.java.servlet.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>PhpJavaServlet</servlet-name>
<servlet-class>php.java.servlet.PhpJavaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PhpJavaServlet</servlet-name>
<url-pattern>*.phpjavabridge</url-pattern>
</servlet-mapping>
问题:
- php-java桥是否保留了修复端口
- 我们能查一下预订了哪个端口吗
- 我们可以指定我们选择的端口号吗
文档说明您需要自己配置
将PHP/Java Bridge库添加到Java应用程序中
将JavaBridge.jar复制到当前目录。
将JavaBridge.jar添加到您的Java应用程序中。编辑清单manifest。MF像这样:
主要类别:HelloWorld
类路径:JavaBridge.jar
- 为PHP打开一个通信端口。编辑HelloWorld.java如下:
import javax.swing.JOptionPane;
public class HelloWorld {
public static final String JAVABRIDGE_PORT="8087";
static final php.java.bridge.JavaBridgeRunner runner =
php.java.bridge.JavaBridgeRunner.getInstance(JAVABRIDGE_PORT);
public static void main(String args[]) throws Exception {
runner.waitFor();
System.exit(0);
}
public void hello(String args[]) throws Exception {
JOptionPane.showMessageDialog(null, "hello " + args[0]);
}
}
- 重新编译Java应用程序