信息化 频道

避免CRM成“高级摆设” 客户关系管理五步

【IT168 技术文档】    摘要

    PHP是很流行的脚本语言。而BEA WebLogic服务器是专门为Java构建的应用服务器。如何才能同时使用这两种技术并从PHP和Java中受益呢?PHP-Java桥接器是方法之一。本教程将详细说明如何设置和使用两种不同的桥接器产品,从而将PHP和Java应用程序代码结合起来。

    介绍:什么是PHP-Java 桥接器?

    和WebLogic Server一起使用的PHP引擎(支持PHP语言的核心解释器)可用的实现都是本地代码。例如,引擎在它自己的操作系统的进程中运行,还必须和Web应用程序中其它进程(如Web服务器或者Java应用服务器)以某种方式进行通信。 就Java服务器而言,可以使用某种技术将通信过程非常透明地呈现给应用程序编程人员。有这样一种组件,它在两种环境之间不断地编组数据,并且提供了应用程序开发人员可以用来集成两种语言的PHP语言构造器。这种组件就是PHP-Java桥接器。

    为什么要使用桥接器?

   能够激发所有人的一个例子就是在同一个应用程序中结合使用Java和PHP,下面几种方法可以实现以下目的:

    1.PHP 代码可以实例化并调用Java对象的方法,可以是POJO或者如EJB这样的Java EE资源。
    2.可以使用WebLogic Server作为Web服务器,用于使用PHP编码的页面。
    3.Java代码可以调用PHP脚本。

    执行程序

    当前有两种桥接器可以使用,并且都能够与WebLogic Server协同运作。一个是来自Zend Technologies Ltd的商业产品。另外一个是开源组件,得到LGPL(GNU Lesser General Public License宽通用公共许可证)许可,可从SourceForge获得。(还有第三种实现,位于php.net,但是这种产品已经被淘汰,因为它不能支持PHP的最新版本,因此本教程将不对其进行讨论。)

    两种桥接器都允许PHP与WebLogic Server上的 Server POJOs和Java EE资源对话。可以通过JNDI访问WebLogic Server资源。下面的代码示例展示的PHP代码可以获取WebLogic Server上的资源,例如:EJB(数据库连接),JMS Queue。该代码可以使用两种桥接器。

// Get a reference to a container-managed resource from WebLogic Server
function getWebLogicResource($jndiName) {
// Set WebLogic-specific parameters for creation of jndi naming context:
// (weblogic.jar must be on the PHP-Java Bridge classpath)
$envt = array(
"java.naming.factory.initial" => "weblogic.jndi.WLInitialContextFactory",
"java.naming.provider.url" => "t3://localhost:7001" // replace with your target server URL
);

// The 桥接 creates the naming context object in the local JVM.
$ctx = new Java('javax.naming.InitialContext', $envt);

// Now JNDI crosses the network, to obtain the resource.
return $ctx->lookup($jndiName);
}
    提示与帮助

    如果按照本教程所述进行实际实现,请不要在一台计算机上同时测试两种桥接器。Zend产品将把所有内容放在执行搜索路径中,然后启动服务,这将干扰SourceForge桥接器的运行。

    如果需要帮助,可将疑问和评论发布到Dev2Dev PHP新闻组。本教程的测试是在Windows XP环境下进行。这两种桥接器可以在各种版本的Windows和Unix平台上运行;可以查看相应产品的文档以了解它是否支持您的配置。

    Zend Platform桥接器

    如今,Zend提供的引擎为用户提供了大量PHP支持。其核心引擎是开放源码的,但是Zend提供的桥接器组件是商业产品的一部分,称为Zend Platform。可以点击这里查看关于对Zend Platform Java Bridge的说明。

    要使用这种桥接器,必须安装Apache Foundation的HTTP Server (或者在Windows中可使用Microsoft的IIS)。 Zend Platform产品发布的Zend平台安装指南(Zend Platform Installation Guide)提供了完整的安装说明。

    图1描述的是运行时配置。桥接器实例化JVM,并向它传递对Java对象进行实例化和操作的请求,包括那些通过JNDI传输的请求。

  图1:以Apache为Web服务器运行Java 桥接器

    在该配置中:

    1.PHP请求到达Apache,并经由Apache传送至PHP引擎。
    2.当PHP脚本发出"new Java()"调用时,桥接器将命令传递给经它实例化了的JVM。POJO请求可以在JVM内部执行。
    3.此时,可以以正常方式访问VJNDI资源。

    有益的提示:

    1.桥接器使用的所有的.jar文件必须位于环境类路径中。该桥接器没有类路径配置选项。
    2.该桥接器没有像核心PHP引擎那样动态转换数据。必须在PHP代码中输入转换。举例来说,如果调用下面这个Java方法:
public void doSomething(int i);

    使用下面的PHP代码进行调用:

$var = "1"
$javaObject->doSomething($var);
    Zend桥接器会抛出异常并表明输入参数的类型错误。由于Zend桥接器不能进行隐式转换,可以在传递参数之前使用下面的方法使解释器将字符串强制转换为数值值:
$javaObject->doSomething($var + 0);

0
相关文章