有没有办法从PHP调用EJB会话bean?有没有具体的功能呢?
答案 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>");
?>