On 20 Apr 2010, at 01:54, Tihomir Surdilovic wrote:
Hi all, I ran into an issue with producing Drools
StatefulKnowledgeSession beans from my producers. Basically I need to
make sure that each produced session is in Conversation scope which is
passivating..but StatefulKnowledgeSession is not serializable which ends
up with exception:
org.jboss.weld.exceptions.IllegalProductException: WELD-000053 Producers
cannot declare passivating scope and return a non-serializable class
One idea was to declare the manager bean which includes the producer
method(s) in Conversation scope and make the producers request scoped
with a check for example:
You mean put the manager bean in the conversation scoped?
if(ksession != null) { return ksession;} else { //create a new one and
save }
It would be cleaner to do this in the postconstruct. Remember all beans are lazy anyway.
but my problem is that since I am specializing producer methods in
the
module beans.xml (and so can the user in their beans.xml) I do not know
all possible specialized producer methods at runtime.
Can you explain more?
Any input on this is much appreciated as currently the following
injections for example:
@Inject @MySession StatefulKnowledgeSession ksession1;
and
@Inject @MySession StatefulKnowledgeSession ksession2;
end up being two different beans because dependent scope producer method
gets called twice.
If the manager is conversation scoped, it should be the same one?