如何从PHP调用EJB会话bean?

时间:2010-06-05 07:05:20

标签: php session ejb javabeans

有没有办法从PHP调用EJB会话bean?有没有具体的功能呢?

2 个答案:

答案 0 :(得分:3)

不是真的。如果你可以进行CORBA调用,大多数容器都支持CORBA作为与远程EJB通信的协议,但我不推荐它。

您可以更好地将EJB会话Bean调用公开为SOAP Web服务,或者只是使用Servlet将其外观并将其作为临时Web服务调用。

现在,如果您在Java EE服务器中运行PHP(我认为Resin可以运行PHP),那么您可以调用可以调用EJB方法的Java调用。

但是,坦率地说,假设您被允许编写它们,Web服务或临时Web外观可能是您最好的,也是最快捷的成功途径。

答案 1 :(得分:1)

有些库可以实现Java / Php桥接,例如PHP/Java Bridge

因此,如果您使用的是IBM WebSphere(source):

<?php
   // Get the provider URL and Initial naming factory
   // These properties were set in the script that started the Java Bridge
   $system = new Java("java.lang.System");
   $providerUrl = $system->getProperty("java.naming.provider.url");
   $namingFactory = $system->getProperty("java.naming.factory.initial");
   $envt = array(
     "javax.naming.Context.PROVIDER_URL" => $providerUrl,
     "javax.naming.Context.INITIAL_CONTEXT_FACTORY" => $namingFactory,);
   // Get the Initial Context
   $ctx = new Java("javax.naming.InitialContext", $envt);
   // Find the EJB
   $obj = $ctx->lookup("WSsamples/BasicCalculator");
   // Get the Home for the EJB
   $rmi = new Java("javax.rmi.PortableRemoteObject");
   $home = $rmi->narrow($obj, new Java("com.ibm.websphere.samples.technologysamples.ejb.stateless.basiccalculatorejb.BasicCalculatorHome"));
   // Create the Object
   $calc = $home->create();
   // Call the EJB
   $num = $calc->makeSum(1,3);
   print ("<p> 1 + 3 = $num </p>");
?>