<?
// EJB configuration for JBoss. Other servers may need other settings.
// Note that CLASSPATH should contain these classes
$envt = array(
"java.naming.factory.initial" => "org.jnp.interfaces.NamingContextFactory",
"java.naming.factory.url.pkgs" => "org.jboss.naming:org.jnp.interfaces",
"java.naming.provider.url" => " jnp://yourflowers.com:1099");
$ctx = new Java("javax.naming.InitialContext", $envt);
// Try to find the object
$obj = $ctx->lookup("YourflowersBean");
// here we find an object - no error handling in this example
$rmi = new Java("javax.rmi.PortableRemoteObject");
$home = $rmi->narrow($obj, new Java("com.yourflowers.StoreHome"));
// $hw is our bean object
$store = $home->create();
// add an order to the bean
$store->place_order($_GET['client_id'], $_GET['item_id']);
print "Order placed.<br>Current shopping cart: <br>";
// get shopping cart data from the bean
$cart = $store->get_cart($_GET['client_id']);
foreach($cart as $item) {
print "$item['name']: $item['count'] at $item['price']<br>\n";
}
// release the object
$store->remove();
?>
这段示例代码可以理解如下:
这段代码示例是用PHP写的,并且构成了PHP Web应用的一部分。
1. PHP应用首先初始化一个EJB操作,位于本地的特定URL名为:jnp://yourflowers.com:1099。
2. 这段代码然后指定了bean——YourfiowerBean,应用将会寻找。
3. 接下来,bean对象返回给EJB服务器。
4. 接着应用程序调用方法——在这个例子中,Java应用包括两个函数:
place_order接受两个值——客户ID 和商品ID用来添加到购物车
get_cart接受一个值——客户ID和返回到目前为止购物车里的物品列表。
脚本执行后引用的类被消除。 附加的价值
Zend Platform的Java桥支持PHP和Java的结合,这样给企业带来了商业和技术级的利益。 商业级的利益:
拥有J2EE应用服务器的公司开始认识到PHP提供的优势超过其它Web实现语言,包括:很短的开发周期,很短的投入市场,很少的TCO等等。
以PHP为主的公司可以利用没有脚本语言的J2EE服务。 技术级的收益:
Platform的PHP/Java桥提供了与普通的Java对象互相作用的能力。
Platform的Java桥对于每个Apache进程在操作中没有JVM的开销。
Platform的Java桥消耗极有限数量的内存,几乎与实现它的活动的数量不相称。