You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Daniel Cavalcanti (Updated) (JIRA)" <ji...@apache.org> on 2012/02/15 00:23:59 UTC

[jira] [Updated] (GERONIMO-6273) Remote EJB-JNDI lookup fails

     [ https://issues.apache.org/jira/browse/GERONIMO-6273?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Cavalcanti updated GERONIMO-6273:
----------------------------------------

    Attachment: multiple-ejbs.zip

Sample maven project that demonstrates the problem.
                
> 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