aspose file tools*
The moose likes EJB and other Java EE Technologies and the fly likes JBoss5.1 EJB3 JSF1.2 integration problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "JBoss5.1 EJB3 JSF1.2 integration problem" Watch "JBoss5.1 EJB3 JSF1.2 integration problem" New topic
Author

JBoss5.1 EJB3 JSF1.2 integration problem

Tudor Raneti
Ranch Hand

Joined: Nov 29, 2009
Posts: 145
I'm following simple examples like this one:
http://gochev.blogspot.com/2009/10/javaee-5-jsf-jpa-ejb3-using-eclipse.html

But i can't get the stateless bean from the EJB module i've successfully deployed on JBoss no matter what i try.
I get:

root cause
java.lang.NullPointerException

i tried with @EJB,
w/ and w/o @EJB mapped name,
w/ and w/o ejb-jar.xml and jboss.xml (which i doubt i configured properly anyway but the example don't say anything about them,
and with new InitialContext().lookup(...) too

at best i got a:
javax.naming.NamingException: Could not dereference object [Root exception is ja
va.lang.reflect.UndeclaredThrowableException]
at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingC
ontext.java:1504)

...
when i probably managed to integrate it but run into another problem.

some example code:


The backing bean - from which i try to display something in a JSF/JSP page and can't:


The interface


The bean



The entity
Deriko Prata
Greenhorn

Joined: Dec 16, 2010
Posts: 21
Hi there, to get a reference to the same ejb, use sessionContext.getBusinessObject(Greeter.class)(inject sessionContext with @Resource) instead of doing InitialContext ctx = new InitialContext(); greeter = (Greeter) ctx.lookup("GreeterBean/remote");

If it still doesn´t work, please put the full stack trace
Tudor Raneti
Ranch Hand

Joined: Nov 29, 2009
Posts: 145
Hello, sorry I've been out during weekend for I have no internet at home momentarily.

Injecting a @Resource would probably work on JBoss as it is one of the solutions I also read about (i will give it a try and update when i test it on JBoss - although i have doubts, since @Resource injection is in the same category as @EJB)

I will describe the solution I found, although JBoss complains about it.
(I will update here with the WARN message after I apply the solution)

The situation was that when i try to inject using @EJB annotation, JBoss gives ERROR:
Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Resolution should not happen via injection container

But when i get the context like this in User.java:

Note i added getInitialContext() and commented out the @EJB injection


It works, although in this JBoss instalation / example it also gives a bizarre error that doesn't seem to affect anything:

[STDERR] javax.naming.NameNotFoundException: GreeterBean not bound




Tudor Raneti
Ranch Hand

Joined: Nov 29, 2009
Posts: 145
I found the problem.
Deployed and exploded EAR directory names mustn't end in .ear (Eclipse was deploying like that) - as soon as i renamed w/o the .ear it started working.

I'll leave it unresolved for the problem with @EJB annotation that won't work
Tudor Raneti
Ranch Hand

Joined: Nov 29, 2009
Posts: 145
Oops, double post
Jaikiran Pai
Marshal

Joined: Jul 20, 2005
Posts: 10102
    
165

The NameNotFoundException is most likely because you are using the wrong JNDI name. While deploying as a .ear the (default) JNDI name of the bean is different from what you use when you deploy as a .jar. See this for more info.

I guess when you removed the .ear extension, it probably is considering it to be a .jar (which is a bit odd actually). Anyway, rename it back to .ear (if it indeed is a .ear file) and then change the lookup code to use the correct JNDI name.

[My Blog] [JavaRanch Journal]
Tudor Raneti
Ranch Hand

Joined: Nov 29, 2009
Posts: 145
Thank you. This also fixed the @EJB "Resolution should not happen via injection

container" problem. Here it sais more:

http://stackoverflow.com/questions/3844453/resolution-should-not-happen-via-injection-container-error

I did go over that one bit of info but I didn't couple it with this:



which can actually sit in the the

EAR_project_name.ear/EJB_project_name.jar/META-INF/jndi.properties, while the

WAR_project_name.war references the EJB_project_name.jar (Eclipse -> build path

->projects -> add)



... which isn't actually needed because JBoss provides it by default ...
Glad it's finally sorted out.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: JBoss5.1 EJB3 JSF1.2 integration problem