在 AIX Version 5.3 中使用 Java 和 PHP 技术进行开发 (5)
2008-11-10 08:25:55 来源:WEB开发网您应该可以在名为“Fopen wrappers”的部分中找到前面的那个选项,如清单 8 所示。
清单 8. Fopen wrappers 部分
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On
allow_url_include = On
将其配置更改为 On,并且添加 allow_url_include 选项。
在完成配置工作后,重新启动 Apache:$ /usr/local/apache2/bin/apachectl restart
然后,在您的 Web 服务器上创建一个与清单 9 中所示类似的文件。
清单 9. 在您的 Web 服务器上创建一个文件
<?
require_once("http://sulaco.mcslp.pri:8080/JavaBridge/java/Java.inc");
$System = new Java("java.lang.System");
print_r($System->getProperties());
?>
其中第一行访问 Tomcat 应用服务器中运行的远程 PHP Java Bridge。通过直接从远程服务器加载包含文件,在访问 Java 类时,所需的类就知道应该与哪个服务器进行通信。
上面的清单 9 中的第二行,创建了一个新的 Java 类实例作为 PHP 对象。在这个示例中,您使用了 java.lang.System 类,它可以用于转储有关 Java 安装的属性。
最后一行用于转储已配置的属性。
如果您现在访问 Apache Web 服务器中的 PHP 脚本,那么您应该获得与清单 10 中所示类似的输出。
清单 10. 输出
[[o:Properties]:"{java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition,
sun.boot.library.path=/usr/local/lib:/usr/local/apr/lib:/System/Library/Frameworks/
JavaVM.framework/Versions/1.5.0/Libraries, java.vm.version=1.5.0_07-87,
shared.loader=, awt.nativeDoubleBuffering=true, gopherProxySet=false,
java.vm.vendor="Apple Computer, Inc.", java.vendor.url=http://apple.com/,
path.separator=:, tomcat.util.buf.StringCache.byte.enabled=true,
java.util.logging.config.file=/Data/Dev/apache-tomcat-6.0.10/conf/logging.properties,
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
java.vm.name=Java HotSpot(TM) Client VM, file.encoding.pkg=sun.io, user.country=US,
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
sun.os.patch.level=unknown, java.vm.specification.name=Java Virtual Machine
Specification, user.dir=/Data/Dev/apache-tomcat-6.0.10, java.runtime.version=
1.5.0_07-164, java.awt.graphicsenv=apple.awt.CGraphicsEnvironment, java.endorsed.
dirs=/Data/Dev/apache-tomcat-6.0.10/endorsed, os.arch=i386, java.io.tmpdir=/Data/
Dev/apache-tomcat-6.0.10/temp, line.separator= , java.vm.specification.vendor=Sun
Microsystems Inc., java.naming.factory.url.pkgs=org.apache.naming, java.util.
logging.manager=org.apache.juli.ClassLoaderLogManager, os.name=Mac OS X, sun.jnu.
encoding=MacRoman,java.library.path=/usr/local/lib:/usr/local/apr/lib:.:/Library/
Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java, java.specification.
name=Java Platform API Specification, java.class.version=49.0, sun.management.
compiler=HotSpot Client Compiler, os.version=10.4.9, http.nonProxyHosts=mcslp.pri|
*.mcslp.pri|192.168.0.1|sendit.com|*.sendit.com, user.home=/Users/mc, catalina.
useNaming=true, user.timezone=Europe/London, java.awt.printerjob=apple.awt.
CPrinterJob, file.encoding=MacRoman, java.specification.version=1.5, catalina.home=/
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
Data/Dev/apache-tomcat-6.0.10,java.class.path=:/Data/Dev/apache-tomcat-6.0.10/bin/
bootstrap.jar:/Data/Dev/apache-tomcat-6.0.10/bin/commons-logging-api.jar:/System/
Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/
14compatibility.jar,user.name=root, java.naming.factory.initial=org.apache.naming.
java.javaURLContextFactory,package.definition=sun.,java.,org.apache.catalina.,
org.apache.coyote.,org.apache.tomcat.,org.apache.jasper., java.vm.specification.
version=1.0, java.home=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/
Home, sun.arch.data.model=32, user.language=en, java.specification.vendor=Sun
Microsystems Inc., awt.toolkit=apple.awt.CToolkit, java.vm.info=mixed mode, sharing,
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
java.version=1.5.0_07,java.ext.dirs=/Library/Java/Extensions:/System/Library/Java/
Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext,
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
sun.boot.class.path=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/
Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/
Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/
laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/
sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/
jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar,
server.loader=, java.vendor=Apple Computer, Inc., catalina.base=/Data/Dev/
apache-tomcat-6.0.10, file.separator=/, java.vendor.url.bug=http://developer.
apple.com/java/, common.loader=${catalina.home}/lib,${catalina.home}/lib/*.jar,
sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, mrj.version=1040.1.5.0
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
_07-164, socksNonProxyHosts=mcslp.pri|*.mcslp.pri|192.168.0.1|sendit.com|
*.sendit.com, package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
tomcat.,org.apache.jasper.,sun.beans., ftp.nonProxyHosts=mcslp.pri|*.mcslp.pri|
192.168.0.1|sendit.com|*.sendit.com, sun.cpu.isalist=}"]
尽管输出中可能没有很清楚地说明,但是您所执行的操作在 PHP 脚本中创建了一个 Java 代码的实例,然后对该代码执行 getProperties() 方法。您执行该代码的方式与 PHP 类似,尽管结果是执行一个 Java 类的方法。而且,该 Java 类本身位于远程服务器,或者它曾位于远程服务器,如果这是您希望执行该代码的方式。
在下一个部分,即本系列文章的最后一部分中,您将使用这个功能来构建一个直接使用原始 Java 类的 PHP 应用程序。
总结
在本文中,您了解了如何访问本系列文章第 4 部分中创建的 Java 类的启用了 SOAP 的部署。创建 Web 服务接口的过程比较复杂,并且不是很直观;然而,Web 服务接口允许从任何 Web 服务客户端访问信息。
但是 Web 服务也有一定的局限性,如果您希望获得一种高性能的解决方案,那么可能存在比 Web 服务路由更合适的备选方法,其中之一便是 PHP Java Bridge。尽管 PHP Java Bridge 的安装比较复杂,但是在完成设置之后,访问远程 Java 类的实际代码则非常简单。只需要使用三行代码,您就可以访问一个远程 Java 类,如果要通过使用 Web 服务和 PHP 客户端来访问它,则需要数百行的代码才能完成相同的过程。
更多精彩
赞助商链接