We are using
- Seam 2.2.0
- Java 1.6.14
- Weblogic 10.3.1.0 (named 11g Doh!)
I have looked at
However I still do not understand how to inject an EJB3 bean into a JSF backing bean. It seems to me that I have to (correct me if I am wrong)
- Annotate with @Name my backing bean
- Annotate with @Name my EJB3 bean
- Use the @In annotation in the backing bean
- Put an empty seam.properties file in the WAR that contains the backing bean
- Put an empty seam.properties file in the JAR that contains the EJB
- Set up a Seam interceptor in ejb-jar.xml of the EJB
Don’t I need to setup some JNDI URL somewhere? How exactly does Seam will find the EJB?
The interceptor is enough?
Also this means that I have to add a seam dependency in my EJB archive (because of the @Name annotation). So the web layer (Seam) “spills” into my business logic (EJB). Is this the recommended approach?
Am I missing something here?
Answer:
Apparently you can set the JNDI pattern in
- The EJB itself with the @JndiName annotation or
- The web.xml file or
- The components.xml file or
- The seam.properties file as Nathan suggested (This is what I did)
Three things:
1) There is no backing bean separate from the EJB session bean anymore.
2) There is a JNDI url, the pattern is set in seam.properties (the example for JBoss in Java Persistence with Hibernate looks like
Seam extends the expression language evaluator with a version that knows about its new scopes and knows to where to look for the EJBs.
3) Seam isn’t a web framework, it is more like an application stack that makes JSF, EJB3 and Hibernate all play better together, so it shouldn’t hurt that you have Seam annotations in your EJBs.