Access to EJBs is different in AS7 see , for JNDI you should have a look at 
Yeah, I saw all those articles. In my case, both my webapp and the ejb are deployed together as ear. And I'm looking up with the below code -
InitialContext context = new InitialContext();
Object obj = context.lookup("java:global/<appname>/<ejbjar-name>/<ejb name>!<interface>");
MyInterface myejb = (MyInterface) obj;
The lookup works fine. Issue is with invoking methods on myejb object. It always fails with the exception mention in my first post.
Why do you don't use injection and let the container do the work for you?
No luck. I tried that too now. I annotated my ref with @EJB and it is being injected by the container properly (just like how the lookup was working properly) but, upon invoking a method on it, i get the same "No EJB client context is available exception".
Here is the whole situation -
my webapp receives a request, which instantiates a class A (packaged along with ejb jar). Class A has a ejb reference (@EJB(beanInterface=ICounterStore.class)) to an EJB packaged in the same jar.
Here is the EJB definition -
public class CounterStoreBean implements ICounterStore
Please post the entire exception stacktrace.
Do you by chance have jndi.properties in your classpath (lib)?