Ok, sorry again for the multi posts, but I think I finally found out what was 
wrong.

I think I simply can't retrieve my EntityManager by injection at all.
Here's what I understood.

First, seam load the overrided Seam.ResourceBundle:

@Scope(SESSION)
  | @BypassInterceptors
  | @Name("org.jboss.seam.core.resourceBundle")
  | public class ExtendedResourceBundle extends 
org.jboss.seam.international.ResourceBundle{
  |     
  |     @Override
  |     protected ResourceBundle loadBundle(String bundleName) {
  |             try {
  |                     ResourceBundle bundle =
  |                             ResourceBundle.getBundle(bundleName,
  |                                             Locale.instance(),
  |                                             
Thread.currentThread().getContextClassLoader(),new DBControl());
  | ...
When the DBControl is instanciated, the 'newBundle' method is then 
automatically called in order to load an actual ResourceBundle:

@Override
  |     public ResourceBundle newBundle(String baseName, Locale locale, String 
format, ClassLoader loader, boolean reload)throws IllegalAccessException, 
  |     InstantiationException, IOException {
  |             if ((baseName == null) || (locale == null) ||
  |                             (format == null) || (loader == null)) {
  |                     throw new NullPointerException();
  |             }
  | 
  |             return new DBResourceBundle(locale);
  |     }...
At that point, I instanciate my DBResourceBundle, which is an extended 
java.util.ResourceBundle.

So, thanks to that implementation, when any jsf pages reference to the object 
'messages' (for exemple: <h:outputText value="#{messages['something']}" />) it 
references to the object created at that line:
return new DBResourceBundle(locale);

So basically, any injected property isn't reachable, cause this is not the 
Session Bean at all, although the class is referenced as one. I guess when you 
manually instanciate a new object, even if its class has some annoation 
declaring it as a Session Bean, it's not. It's simply a Java object.

So when further in the application I make a call on the @Create method, the 
method is called without problem and do whatever it has to do (in my case, 
loading my messages from the DB thanks to the EntityManager), but it is all 
wrapped in my Session Bean, NOT in my Java Object referenced by 'messages'.

If I understood it right, I then have to answer one simple question:
Is it possible to retrieve the EntityManager without using the Seam injection 
mecanism?
If not, I'll simply use plain java code to connect to my base, but it'll be 
quite dirty.

Finally, I hope I get all that right =)

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4060001#4060001

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4060001
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to