Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-11848

EJB WFLYEJB0473: JNDI bindings for ... ejb: is not correct when there is not an appName

    Details

      Description

      EJB WFLYEJB0473: JNDI bindings for ... ejb: is not correct when there is not an appName

      EAP 7.2 is logging the ejb: JNDI binding 'ejb:ejb-client/Hello!com.jboss.examples.ejb.Hello' which can be used by remote clients, but when the deployment is not an ear there is not an an AppName/ModuleName.

      the format is: ejb: appName / moduleName / distinctName / EJBName!EJBInterface

      For a deployment ejb-client.jar, the EJB it seeing appName == moduleName == ejb-client. But the way it has worked is if there is no sub deployment, then the appName is considered "", making the lookup: ejb:/ejb-client/Hello!com.jboss.examples.ejb.Hello

      If the ejb-client.jar was packaged in app.ear, then the lookup would be ejb:app/ejb-client/Hello!com.jboss.examples.ejb.Hello

      So all of that to say, there should be a / in the binding name when there is not an appName (ie not in an ear or not a subdeployment).

        @Resource(lookup = "java:app/AppName")
        private String appName;
        @Resource(lookup = "java:module/ModuleName")
        private String moduleName;
      

       
      https://docs.jboss.org/author/display/WFLY/EJB+invocations+from+a+remote+server+instance

      INFO  [org.jboss.as.ejb3.deployment] (MSC service thread 1-5) WFLYEJB0473: JNDI bindings for session bean named 'Hello' in deployment unit 'deployment "ejb-client.jar"' are as follows:
      
      	java:global/ejb-client/Hello!com.jboss.examples.ejb.Hello
      	java:app/ejb-client/Hello!com.jboss.examples.ejb.Hello
      	java:module/Hello!com.jboss.examples.ejb.Hello
      	java:jboss/exported/ejb-client/Hello!com.jboss.examples.ejb.Hello
      	ejb:ejb-client/Hello!com.jboss.examples.ejb.Hello
      	java:global/ejb-client/Hello
      	java:app/ejb-client/Hello
      	java:module/Hello
      

      org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor

                  // log EJB's ejb:/ namespace binding
                  final String ejbNamespaceBindingName = sessionBean.isStateful() ? ejbNamespaceBindingBaseName + "!" + viewClassName + "?stateful" : ejbNamespaceBindingBaseName + "!" + viewClassName;
                  logBinding(jndiBindingsLogMessage, ejbNamespaceBindingName);
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  soul2zimate Chao Wang
                  Reporter:
                  soul2zimate Chao Wang
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: