]
Chao Wang moved JBEAP-16551 to WFLY-11848:
------------------------------------------
Project: WildFly (was: JBoss Enterprise Application Platform)
Key: WFLY-11848 (was: JBEAP-16551)
Workflow: GIT Pull Request workflow (was: CDW with loose statuses v1)
Fix Version/s: (was: 7.2.2.GA)
EJB WFLYEJB0473: JNDI bindings for ... ejb: is not correct when there
is not an appName
---------------------------------------------------------------------------------------
Key: WFLY-11848
URL:
https://issues.jboss.org/browse/WFLY-11848
Project: WildFly
Issue Type: Bug
Affects Versions: 16.0.0.Final
Reporter: Chao Wang
Assignee: Chao Wang
Priority: Major
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).
{code}
@Resource(lookup = "java:app/AppName")
private String appName;
@Resource(lookup = "java:module/ModuleName")
private String moduleName;
{code}
https://docs.jboss.org/author/display/WFLY/EJB+invocations+from+a+remote+...
{code}
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
{code}
org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor
{code}
// log EJB's ejb:/ namespace binding
final String ejbNamespaceBindingName = sessionBean.isStateful() ?
ejbNamespaceBindingBaseName + "!" + viewClassName + "?stateful" :
ejbNamespaceBindingBaseName + "!" + viewClassName;
logBinding(jndiBindingsLogMessage, ejbNamespaceBindingName);
{code}