[JBoss Seam] - Problem when destroying conversational SB
by codest
Hi all,
with a certain component I always get the following exception, even though I followed all the guidance in http://wiki.jboss.org/wiki/Wiki.jsp?page=JbossTimeoutSettingForSeam.
| Could not destroy component: interview
| javax.ejb.EJBNoSuchObjectException: Could not find Stateful bean: 3j001-6m3jlm-f2n4k957-1-f2nc99l9-2c
| at org.jboss.ejb3.cache.simple.SimpleStatefulCache.get(SimpleStatefulCache.java:268)
| at org.jboss.ejb3.stateful.StatefulRemoveInterceptor.removeSession(StatefulRemoveInterceptor.java:127)
| at org.jboss.ejb3.stateful.StatefulRemoveInterceptor.invoke(StatefulRemoveInterceptor.java:87)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
| at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
| at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
| at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
| at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
| at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:203)
| at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98)
| at $Proxy1051.destroy(Unknown Source)
|
|
A strange thing I noticed is, that also there exists only one interview component in conversation scope (checked via debug page), every log message appears two times:
| 16:38:46,827 INFO [InterviewAction] Creating class de.codest.easyCV.logic.InterviewAction - hashCode: 23232015
| 16:38:46,827 INFO [InterviewAction] Creating class de.codest.easyCV.logic.InterviewAction - hashCode: 23232015
| ...
| 16:38:47,620 INFO [InterviewAction] Started interview.
| 16:38:47,620 INFO [InterviewAction] Started interview.
| ...
| 16:44:47,780 INFO [InterviewAction] Destroying class de.codest.easyCV.logic.InterviewAction - 6459176
| 16:44:47,780 INFO [InterviewAction] Destroying class de.codest.easyCV.logic.InterviewAction - 6459176
| 16:44:47,781 INFO [InterviewAction] EMERGENY SENDING profile to mail(a)somewhere.com
| 16:44:47,781 INFO [InterviewAction] EMERGENY SENDING profile to mail(a)somewhere.com
| 16:44:47,795 WARN [Contexts] Could not destroy component: interview
| javax.ejb.EJBNoSuchObjectException: Could not find Stateful bean: 3j001-6m3jlm-f2n4k957-1-f2nc99l9-2c
| at org.jboss.ejb3.cache.simple.SimpleStatefulCache.get(SimpleStatefulCache.java:268)
| ...
|
But the exception shows only once.
This is the bean code (excerpt):
| @Stateful
| @Name("interview")
| @Scope(ScopeType.CONVERSATION)
| @Conversational(ifNotBegunOutcome="home")
| @CacheConfig(idleTimeoutSeconds=1800)
|
| public class InterviewAction implements Interview {
|
| ProfileInterface profile;
|
| @Create
| public void init() {
| log.info("Creating "+this.getClass()+" - "+this.hashCode());
| }
|
|
| @Begin(ifOutcome="startInterview")
| public String startInterview() {
| ....
|
| log.info("Started interview.");
| state = Status.Interviewing;
| return "startInterview";
| }
|
| @Remove @Destroy
| /** This method is used to send the input data (= profile) by mail to
| the user if the session should expire unexpectedly **/
| public void destroy() {
| log.info("Destroying "+this.getClass()+" - "+this.hashCode());
| // emergency sending of profile when destroyed from interview
| state
| if (isInterviewing()) {
| log.info("EMERGENY SENDING profile to "+getEmail());
| // forced interrupt
| profile.interrupt();
| sendProfileToUser();
| }
| }
|
So there should be sent a mail, when the bean is destroyed from the "interviewing" state, but this doesn't happen (though it did already work sometimes).
If you need further information I'll be glad to give it to you. Thanks in advance for any comments and help.
Regards,
Jörg
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4052190#4052190
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4052190
18Â years, 10Â months
[Performance Tuning] - Re: DS - No managed connections available within blocking ti
by sc0tt
Hi,
The number of users(clients) is set at 500. In the XXXXDS.xml(four of them), I have set the max connections to 200. Normally it sits around 100(even with the 500 user load). However, after say, 1 hour, the server itself pauses. No clients are serviced, and it is impossible to run any commands on the server, as it will not respond. This pause can last 200 seconds, after which time the server happily recovers.
I will increase the max DS connections to 750(ie larger than the current user load), just to test. However, I would expect Datasources to be reused, and having a 500 user load with only 100 datasource connections seems quite reasonable.
In terms of the db backend, this is oracle. The oracle db seems quite happy, and simply pauses whilst the application pauses. I have looked into several "statspack" reports for the oracle db during this time, but no "unusual" activity is reported, and nothing seems to be wrong. In summary the oracle server seems perfectly fine.
A stacktrace from the jboss server, indicates that there are several threads waiting on a db connection, yet there seems to be plenty of available headroom, for the datasources to grow, but nothing is growing them?
thanks
Sc0tt....
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4052189#4052189
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4052189
18Â years, 10Â months