[
https://issues.apache.org/jira/browse/GERONIMO-6273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13209064#comment-13209064
]
Ivan commented on GERONIMO-6273:
--------------------------------
For the remote ejb invocation, you may need to set the correct context factory,
try the links below :
[1]
http://apache-geronimo.328035.n3.nabble.com/EJB-in-Apache-Geronimo-Java-client-invokation-td839481.html
[2]
https://cwiki.apache.org/GMOxDOC22/deploying-and-running-ejb-application-clients.html
> Remote EJB-JNDI lookup fails
> ----------------------------
>
> Key: GERONIMO-6273
> URL: https://issues.apache.org/jira/browse/GERONIMO-6273
> Project: Geronimo
> Issue Type: Bug
> Security Level: public(Regular issues)
> Components: OpenEJB
> Affects Versions: 2.2.1
> Environment: Windows 7
> Reporter: Daniel Cavalcanti
> Priority: Critical
> Attachments: multiple-ejbs.zip
>
>
> I have created a simple project that defines a Remote Stateless EJB:
> @Remote
> public interface BeanService {
> public String hello(String name);
> }
> @Stateless
> public class BeanImpl implements BeanService {
> @Resource(name="who")
> private String who;
> public String hello(String name) {
> return MessageFormat.format("Hello {0} from {1}.", name, who);
> }
> }
> I also created the deployment descriptor and plan files:
> ejb-jar.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <ejb-jar
> version="3.0"
> xmlns="http://java.sun.com/xml/ns/javaee"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="
> http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
>
> <enterprise-beans>
>
> <session>
> <ejb-name>BeanImplA</ejb-name>
> <mapped-name>BeanImplA</mapped-name>
> <business-remote>sample.BeanService</business-remote>
> <ejb-class>sample.BeanImpl</ejb-class>
> <env-entry>
> <env-entry-name>who</env-entry-name>
> <env-entry-type>java.lang.String</env-entry-type>
> <env-entry-value>BeanImplA</env-entry-value>
> </env-entry>
> </session>
>
> <session>
> <ejb-name>BeanImplB</ejb-name>
> <mapped-name>BeanImplBB</mapped-name>
> <business-remote>sample.BeanService</business-remote>
> <ejb-class>sample.BeanImpl</ejb-class>
> <env-entry>
> <env-entry-name>who</env-entry-name>
> <env-entry-type>java.lang.String</env-entry-type>
> <env-entry-value>BeanImplBB</env-entry-value>
> </env-entry>
> </session>
>
> </enterprise-beans>
>
> </ejb-jar>
> openejb-jar.xml:
> <?xml version="1.0" encoding="windows-1252"?>
> <openejb-jar
> xmlns="http://openejb.apache.org/xml/ns/openejb-jar-2.2"
> xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2"
> xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2"
> xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="
> http://openejb.apache.org/xml/ns/openejb-jar-2.2
> http://geronimo.apache.org/schemas-2.2/openejb-jar-2.2.xsd">
> <sys:environment>
> <sys:moduleId>
> <sys:groupId>sample</sys:groupId>
> <sys:artifactId>multiple-ejbs</sys:artifactId>
> <sys:version>1.0.0</sys:version>
> <sys:type>jar</sys:type>
> </sys:moduleId>
> </sys:environment>
>
> <enterprise-beans>
> <session>
> <ejb-name>MyBeanA</ejb-name>
> <jndi-name>MyBeanA</jndi-name>
> </session>
> <session>
> <ejb-name>MyBeanB</ejb-name>
> <jndi-name>MyBeanBB</jndi-name>
> </session>
> </enterprise-beans>
> </openejb-jar>
> And a simple web service class to test the deployed EJB:
> @WebService(
> name="SampleWS",
> portName="SampleWS",
> serviceName="SampleWS")
> @Stateless()
> public class SampleWS {
>
> private InitialContext ic;
>
> @PostConstruct
> protected void postConstruct() {
> try {
> ic = new InitialContext();
> } catch (NamingException ex) {
> ex.printStackTrace();
> }
> }
>
> @WebMethod
> public void lookup(@WebParam String name) {
> try {
> System.out.println("Looking up " + name);
> BeanService bean = (BeanService) ic.lookup(name);
> System.out.println(bean.hello(name));
> } catch (Exception ex) {
> System.err.println("Error: " + ex.getMessage());
> }
> }
>
> }
> I start geronimo with debug level logging and deploy the application:
> 2012-02-14 18:12:39,855 INFO [startup] Undeploying app:
> C:\Users\204071044\AppData\Local\Temp\geronimo-deployer983143051956019168.tmpdir\multiple-ejbs-1.0.0.jar
> 2012-02-14 18:12:39,903 INFO [DirectoryMonitor] Hot deployer notified that
> an artifact was removed: sample/multiple-ejbs/1.0.0/jar
> 2012-02-14 18:12:40,683 INFO [config] Configuring
> Service(id=DefaultStatelessContainer, type=Container, provider-id=Default
> Stateless Container)
> 2012-02-14 18:12:40,683 INFO [config] Configuring
> Service(id=DefaultStatefulContainer, type=Container, provider-id=Default
> Stateful Container)
> 2012-02-14 18:12:40,683 INFO [config] Configuring
> Service(id=DefaultSingletonContainer, type=Container, provider-id=Default
> Singleton Container)
> 2012-02-14 18:12:40,683 INFO [config] Configuring
> Service(id=DefaultBMPContainer, type=Container, provider-id=Default BMP
> Container)
> 2012-02-14 18:12:40,683 INFO [config] Configuring
> Service(id=DefaultCMPContainer, type=Container, provider-id=Default CMP
> Container)
> 2012-02-14 18:12:40,683 INFO [config] Configuring enterprise application:
> sample/multiple-ejbs/1.0.0/jar
> 2012-02-14 18:12:40,761 INFO [OpenEJB] Auto-deploying ejb BeanImplA:
> EjbDeployment(deployment-id=multiple-ejbs/BeanImplA)
> 2012-02-14 18:12:40,761 INFO [OpenEJB] Auto-deploying ejb BeanImplB:
> EjbDeployment(deployment-id=multiple-ejbs/BeanImplB)
> 2012-02-14 18:12:40,761 INFO [OpenEJB] Auto-deploying ejb BeanImpl:
> EjbDeployment(deployment-id=multiple-ejbs/BeanImpl)
> 2012-02-14 18:12:40,761 INFO [OpenEJB] Auto-deploying ejb SampleWS:
> EjbDeployment(deployment-id=multiple-ejbs/SampleWS)
> 2012-02-14 18:12:40,761 INFO [config] Enterprise application
> "sample/multiple-ejbs/1.0.0/jar" loaded.
> 2012-02-14 18:12:41,416 INFO [JAXWSServiceBuilder] Configuring EJB JAX-WS
> Web Service: SampleWS at /SampleWS/SampleWS
> 2012-02-14 18:12:43,601 INFO [startup] Assembling app:
> C:\Users\204071044\AppData\Local\Temp\geronimo-deployer2964695379050213700.tmpdir\multiple-ejbs-1.0.0.jar
> 2012-02-14 18:12:43,805 INFO [startup] Jndi(name=BeanImplA) -->
> Ejb(deployment-id=multiple-ejbs/BeanImplA)
> 2012-02-14 18:12:43,805 INFO [startup] Jndi(name=BeanImplBB) -->
> Ejb(deployment-id=multiple-ejbs/BeanImplB)
> 2012-02-14 18:12:43,805 INFO [startup] Jndi(name=BeanImplRemote) -->
> Ejb(deployment-id=multiple-ejbs/BeanImpl)
> 2012-02-14 18:12:43,805 INFO [startup] Jndi(name=SampleWSLocalBean) -->
> Ejb(deployment-id=multiple-ejbs/SampleWS)
> 2012-02-14 18:12:43,805 INFO [startup] Created
> Ejb(deployment-id=multiple-ejbs/BeanImplB, ejb-name=BeanImplB,
> container=DefaultStatelessContainer)
> 2012-02-14 18:12:43,820 INFO [startup] Created
> Ejb(deployment-id=multiple-ejbs/BeanImplA, ejb-name=BeanImplA,
> container=DefaultStatelessContainer)
> 2012-02-14 18:12:43,836 INFO [startup] Created
> Ejb(deployment-id=multiple-ejbs/BeanImpl, ejb-name=BeanImpl,
> container=DefaultStatelessContainer)
> 2012-02-14 18:12:43,836 INFO [startup] Created
> Ejb(deployment-id=multiple-ejbs/SampleWS, ejb-name=SampleWS,
> container=DefaultStatelessContainer)
> 2012-02-14 18:12:43,836 INFO [startup] Deployed
> Application(path=C:\Users\204071044\AppData\Local\Temp\geronimo-deployer2964695379050213700.tmpdir\multiple-ejbs-1.0.0.jar)
> 2012-02-14 18:12:44,023 INFO [ModuleDeployer] Deploying module:
> addressing-1.5.2 -
> file:/C:/Users/204071044/Software/DRMS/2.0/geronimo-tomcat6-javaee5-2.2.1/repository/org/apache/axis2/addressing/1.5.2/addressing-1.5.2.mar
> 2012-02-14 18:12:44,210 INFO [SupportedModesServiceImpl] Portlet mode 'edit'
> not found for portletId: '/plugin.Deployment!-87374526|0'
> I tried various combinations of JNDI name to lookup this EJB with no success.
> According to the documentation, the name should be
> {deploymentId}{interfaceType.annotationName}, so in this case,
> "multiple-ejbs/BeanImplARemote" should work for example. However, the output
> is an error:
> Looking up multiple-ejbs/BeanImplARemote
> Error: multiple-ejbs/BeanImplARemote
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira