Well, those converter beans are really weird...

In the getAsObject method you might load entities over and over via the em. So 
I decided to cache them (I even have a method to check if something is dirty).

Well this cache is a inner class with a HashMap. It works well, entities get 
filled into the cache and retrieved from there. BUT: Only during one page 
invocation.

As soon as I enter a page later, the cache is empty... or let's say, it's even 
a different cache (I logged the hashcode). This is the same problem like with 
the EntityManager. It gets lost after first invocation. And the funny thing: I 
even don't know how it's being reconstructed. I added a debug message to the 
cache's constructor, but it gets only called once. The next times the cache 
gets instantiated it overrides my constructor. This is extremely weird ^^.

However, to draw the conclusion. If you have a converter with some kind of 
property

...
  | @Name("theConverter")
  | ...
  | public class TheConverter ... {
  | 
  |     private SomeThing something = new SomeThing();
  | 
  |     public Object getAsObject(...) {
  |         use(something);
  | ...
"something" will be a different instance for every page invocation. If you want 
it to be always the same, use the Singleton pattern, so that the property class 
manages its instance itself.


  | ...
  |     //use(something); //Not like this!
  |     use(SomeThing.instance());  //But that way!
  | public class SomeThing implements Serializable {
  |     private static SomeThing instance;
  |     public static SomeThing instance() {
  |         if (instance == null)
  |             instance = new SomeThing();
  |         return instance;
  |     }
  |     ....

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

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

Reply via email to