Q1: I want to know that which one is correct .
1). the client released with EJB interface class.
2). the client released with EJB stub class.
3). the client released with EJB interface class and get stub class after lookup from JNDI.
Q2: Do I need to update the client when I update the EJB component.
Q2: What changed before lookup from JNDI and after that from the viewpoint of client.
I think it's server dependent, but generally 3. Only J2EE ref. implementation required to generate EJB stub classes and include them in client's classpath.
A2: No, unless you change EJB interface
The client should be packaged with the Remote and Home interface only
So whenever these two interfaces change in the Bean - the client needs to be updated
IMHO ,The stub should 'never' be bundled with the client.
The stubs are downloaded dynamically at run time when the client does a JNDI lookup. A diiferent version already present at the client side might cause some problems if the stub has changed