Re: Javamonitor help
Re: Javamonitor help
- Subject: Re: Javamonitor help
- From: Gary Teter <email@hidden>
- Date: Mon, 5 Mar 2007 10:03:55 -0800
My best guess is that an exception is being thrown during session
check-in/check-out or sleep. Here's some code that I use in
Application.java to prevent this. I believe Wonder also has some of
these fixes.
Application.java:
public WOResponse handleActionRequestError(WORequest aRequest,
Exception exception, String reason, WORequestHandler aHandler, String
actionClassName, String actionName, Class actionClass, WOAction
actionInstance) {
if (actionInstance != null) {
return handleException(exception, actionInstance.context
());
} else {
//return super.handleException(exception, null);
return handleException(exception, null);
}
}
/*
Adapted from http://wocode.com/cgi-bin/WebObjects/WOCode.woa/wa/
ShareCodeItem?itemId=322
See also http://www.omnigroup.com/mailman/archive/webobjects-
dev/2003-November/037140.html
*/
public WOContext createContextForRequest(WORequest request) {
//new RuntimeException().printStackTrace();
/* setup user mutable dictionary to available for the
rest of this request. request.userInfo() always
will return a immutable dictionary.
*/
NSMutableDictionary contextDict = new NSMutableDictionary();
NSDictionary userInfo = request.userInfo();
if (userInfo == null) {
/* from scratch */
request.setUserInfo(new NSDictionary(contextDict,
"contextDict"));
} else {
/* incorporate existing userInfo */
NSMutableDictionary mutableUserInfo =
userInfo.mutableClone();
mutableUserInfo.setObjectForKey(contextDict,
"contextDict");
request.setUserInfo(mutableUserInfo);
}
WOContext context = super.createContextForRequest(request);
//WOContext context = new WOContext(request);
contextDict.setObjectForKey(context, "context");
return context;
}
public WOResponse dispatchRequest(WORequest request) {
WOResponse response = null;
try {
response = super.dispatchRequest(request);
} finally {
WOContext context = _contextFromRequest(request);
if (context != null && context.hasSession()) {
try {
//NSLog.debug.appendln("dispatchRequest() -
checking in session for context " + context);
context._session()._sleepInContext(context);
sessionStore().checkInSessionForContext(context);
context._setSession(null);
//NSLog.debug.appendln("dispatchRequest() -
finished checking in session, context.hasSession() is: " +
context.hasSession());
} catch (Exception e) {
NSLog.debug.appendln("Caught exception checking
in session: " + e);
}
}
}
return response;
}
private WOContext _contextFromRequest(WORequest r) {
NSDictionary userInfo = r.userInfo();
if (hasElements(userInfo)) {
NSDictionary contextDict = (NSDictionary)
userInfo.objectForKey("contextDict");
if (hasElements(contextDict)) {
return (WOContext)contextDict.objectForKey("context");
}
}
return null;
}
/*
Adapted from http://wocode.com/cgi-bin/WebObjects/WOCode.woa/wa/
ShareCodeItem?itemId=322
See also http://www.omnigroup.com/mailman/archive/webobjects-
dev/2003-November/037140.html
*/
public void saveSessionForContext(WOContext context) {
//NSLog.debug.appendln("Application.saveSessionForContext()
- howdy! context.hasSession() is: " + context.hasSession());
try {
super.saveSessionForContext(context);
} catch (Throwable t) {
NSLog.debug.appendln("Caught exception saving session: "
+ t);
t.printStackTrace();
try {
sessionStore().checkInSessionForContext(context);
} catch (Exception e) {
NSLog.debug.appendln("Caught exception checking in
session: " + e);
}
}
//NSLog.debug.appendln("Application.saveSessionForContext()
- howdy! context.hasSession() is: " + context.hasSession() + ",
context: " + context);
}
public static boolean hasElements(NSDictionary dictionary) {
return (dictionary != null && dictionary.count() > 0);
}
On Mar 5, 2007, at 7:59 AM, James Cicenia wrote:
OK-
I think I got the correct thread dump from a frozen instance this
morning:
What does it all mean?
Thanks
James Cicenia
Full thread dump Java HotSpot(TM) Server VM (1.5.0_06-68 mixed mode):
"WorkerThread15" prio=5 tid=0x00622ba0 nid=0x1834a00 in Object.wait
() [0xb161c000..0xb161cd10]
at java.lang.Object.wait(Native Method)
- waiting on <0x07f3c500> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at java.lang.Object.wait(Object.java:474)
at com.webobjects.appserver.WOSessionStore.checkOutSessionWithID
(WOSessionStore.java:207)
- locked <0x07f3c500> (a com.webobjects.appserver.WOSessionStore
$TimeoutEntry)
at com.webobjects.appserver.WOApplication.restoreSessionWithID
(WOApplication.java:1546)
at com.webobjects.appserver.WOContext.session(WOContext.java:248)
at com.webobjects.appserver.WOAction.session(WOAction.java:138)
at com.hb.DirectAction.showCategoryAction(DirectAction.java:119)
"WorkerThread14" prio=5 tid=0x006226f0 nid=0x1834600 in Object.wait
() [0xb159b000..0xb159bd10]
at java.lang.Object.wait(Native Method)
- waiting on <0x07f3c750> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at java.lang.Object.wait(Object.java:474)
at com.webobjects.appserver.WOSessionStore.checkOutSessionWithID
(WOSessionStore.java:207)
- locked <0x07f3c750> (a com.webobjects.appserver.WOSessionStore
$TimeoutEntry)
at com.webobjects.appserver.WOApplication.restoreSessionWithID
(WOApplication.java:1546)
at com.webobjects.appserver.WOContext.session(WOContext.java:248)
at com.webobjects.appserver.WOAction.session(WOAction.java:138)
at com.hb.DirectAction.showCategoryAction(DirectAction.java:119)
"WorkerThread13" prio=5 tid=0x00622240 nid=0x1834200 in Object.wait
() [0xb151a000..0xb151ad10]
at java.lang.Object.wait(Native Method)
- waiting on <0x07f3c750> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at java.lang.Object.wait(Object.java:474)
at com.webobjects.appserver.WOSessionStore.checkOutSessionWithID
(WOSessionStore.java:207)
- locked <0x07f3c750> (a com.webobjects.appserver.WOSessionStore
$TimeoutEntry)
at com.webobjects.appserver.WOApplication.restoreSessionWithID
(WOApplication.java:1546)
at com.webobjects.appserver.WOContext.session(WOContext.java:248)
at com.webobjects.appserver.WOAction.session(WOAction.java:138)
at com.hb.DirectAction.showCategoryAction(DirectAction.java:119)
"WorkerThread12" prio=5 tid=0x00621d90 nid=0x1833e00 in Object.wait
() [0xb1499000..0xb1499d10]
at java.lang.Object.wait(Native Method)
- waiting on <0x07f3c750> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at java.lang.Object.wait(Object.java:474)
at com.webobjects.appserver.WOSessionStore.checkOutSessionWithID
(WOSessionStore.java:207)
- locked <0x07f3c750> (a com.webobjects.appserver.WOSessionStore
$TimeoutEntry)
at com.webobjects.appserver.WOApplication.restoreSessionWithID
(WOApplication.java:1546)
at com.webobjects.appserver.WOContext.session(WOContext.java:248)
at com.webobjects.appserver.WOAction.session(WOAction.java:138)
at com.hb.DirectAction.showCategoryAction(DirectAction.java:119)
"WorkerThread11" prio=5 tid=0x00621920 nid=0x1833600 in Object.wait
() [0xb1418000..0xb1418d10]
at java.lang.Object.wait(Native Method)
- waiting on <0x07f3c750> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at java.lang.Object.wait(Object.java:474)
at com.webobjects.appserver.WOSessionStore.checkOutSessionWithID
(WOSessionStore.java:207)
- locked <0x07f3c750> (a com.webobjects.appserver.WOSessionStore
$TimeoutEntry)
at com.webobjects.appserver.WOApplication.restoreSessionWithID
(WOApplication.java:1546)
at com.webobjects.appserver.WOContext.session(WOContext.java:248)
at com.webobjects.appserver.WOAction.session(WOAction.java:138)
at com.hb.DirectAction.showCategoryAction(DirectAction.java:119)
"WorkerThread10" prio=5 tid=0x006215c0 nid=0x1833200 in Object.wait
() [0xb1397000..0xb1397d10]
at java.lang.Object.wait(Native Method)
- waiting on <0x07f3c500> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at java.lang.Object.wait(Object.java:474)
at com.webobjects.appserver.WOSessionStore.checkOutSessionWithID
(WOSessionStore.java:207)
- locked <0x07f3c500> (a com.webobjects.appserver.WOSessionStore
$TimeoutEntry)
at com.webobjects.appserver.WOApplication.restoreSessionWithID
(WOApplication.java:1546)
at com.webobjects.appserver.WOContext.session(WOContext.java:248)
at com.webobjects.appserver.WOAction.session(WOAction.java:138)
at com.hb.DirectAction.showCategoryAction(DirectAction.java:119)
"WorkerThread8" prio=5 tid=0x00620c50 nid=0x1832e00 in Object.wait
() [0xb1295000..0xb1295d10]
at java.lang.Object.wait(Native Method)
- waiting on <0x07f3c500> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at java.lang.Object.wait(Object.java:474)
at com.webobjects.appserver.WOSessionStore.checkOutSessionWithID
(WOSessionStore.java:207)
- locked <0x07f3c500> (a com.webobjects.appserver.WOSessionStore
$TimeoutEntry)
at com.webobjects.appserver.WOApplication.restoreSessionWithID
(WOApplication.java:1546)
at com.webobjects.appserver.WOContext.session(WOContext.java:248)
at com.webobjects.appserver.WOAction.session(WOAction.java:138)
at com.hb.DirectAction.showCategoryAction(DirectAction.java:119)
"Finalizer" daemon prio=8 tid=0x006083f0 nid=0x1813400 in
Object.wait() [0xb0a04000..0xb0a04d10]
at java.lang.Object.wait(Native Method)
- waiting on <0x073cba88> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
- locked <0x073cba88> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x00607ff0 nid=0x1813000 in
Object.wait() [0xb0983000..0xb0983d10]
at java.lang.Object.wait(Native Method)
- waiting on <0x073cbb08> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:474)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x073cbb08> (a java.lang.ref.Reference$Lock)
"main" prio=5 tid=0x00601620 nid=0x1804a00 in Object.wait()
[0xb07ff000..0xb08000dc]
at java.lang.Object.wait(Native Method)
- waiting on <0x06c34270> (a java.lang.Thread)
at java.lang.Thread.join(Thread.java:1113)
- locked <0x06c34270> (a java.lang.Thread)
at java.lang.Thread.join(Thread.java:1166)
at com.webobjects.appserver.WOApplication.run(WOApplication.java:918)
at com.webobjects.appserver.WOApplication.main(WOApplication.java:
324)
at com.hb.Application.main(Application.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.webobjects._bootstrap.WOBootstrap.main(WOBootstrap.java:71)
"VM Thread" prio=9 tid=0x006077c0 nid=0x1812c00 runnable
"VM Periodic Task Thread" prio=9 tid=0x0060b360 nid=0x1819400
waiting on condition
"Exception Catcher Thread" prio=10 tid=0x00601840 nid=0x1805200
runnable
--
WireHose: Smart metadata and personalization for WebObjects.
http://wirehose.com/
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden