Troubleshooting EJB 3 remote clients

The expected outcome is a dummy echo print on the Console when running the client. However the things to checkout are many and so the number of possible errors. A quite common error in the forum of developers is:

 Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

The checklist for this error includes:

  • Have you added JBoss's client libraries to your project ?
  • Maybe you are using a wrong JNDI root context. For example, instead of the correct

             ejb:/as7project//SampleBeanRemoteImpl!com.sample.ejb.SampleBeanRemote
             you might be using:
             java:/as7project//SampleBeanRemoteImpl!com.sample.ejb.SampleBeanRemote

Another common issue is:

 No EJB receiver available for handling [appName:,modulename:,distinctname:as7project] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@10f6d3

In this case, there's a mismatch between module name and distinct name. (Look at the underlined section). Check your JNDI building String

On the other hand, here the error looks the same but the module name is correct:

 No EJB receiver available for handling [appName:,modulename:as7project,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@7b7072

Here, you should check your JNDI again, maybe you have uncorrectly stated your remote EJB name or your remote EJB implementation class. For example, instead of the correct
ejb:/as7project//SampleBeanRemoteImpl!com.sample.ejb.SampleBeanRemote
you might be using:
java:/as7project//SampleBeanRemoteImpl!com.sample.ejb.SampleBeanRemoteTypo

Here's one more issue:

WARN: Could not register a EJB receiver for connection to remote://192.168.1.1:4447
java.lang.RuntimeException: Operation failed with status WAITING

This is commonly caused by a wrong combination of IP or port in the file jboss-ejb-client.properties.

  • You might be unable to reach that host address
  • Maybe you are using a port-offset on that server, so instead of port 4447 you should use 4447 + offset

One more issue:

Exception in thread "main" javax.naming.NamingException: No provider URL configured for connection

Chances are that you are trying to initialize older JBoss InitialContextFactory.
For example, maybe you have got:

jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");

If so, remove that line from your code!

Got any other issue that you couldn't solve ? want to share your experience when solving issues with EJB 3 remote clients ? mail me at: This email address is being protected from spambots. You need JavaScript enabled to view it.

0
0
0
s2smodern

Related articles available on mastertheboss.com

JBoss AS 7 introduction

This is an introduction tutorial to the newest JBoss AS 7 which a

Develop Java EE applications on WildFly

In this tutorial we will learn how to develop a basic Java EE 8 a

Adding users with JBoss AS 7

If you are planning to add new users to your management interface

Using JBoss AS 7 management API programmatically

In this tutorial we will show how to use detyped management API t

JNDI view in JBoss AS 7

JNDI can be checked on the naming subsystem of the application se

How to install a module on WildFly / JBoss AS 7

Installing a module on WildFly / JBoss AS 7 requires creating a p

W

i

l

d

F

l

y

 

c

h

e

a

t

s

h

e

e

t