• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Javamonitor help
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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
  • Follow-Ups:
    • Re: Javamonitor help - FIXED
      • From: James Cicenia <email@hidden>
References: 
 >Re: Javamonitor help (From: James Cicenia <email@hidden>)
 >Re: Javamonitor help (From: Mike Schrag <email@hidden>)
 >Re: Javamonitor help (From: James Cicenia <email@hidden>)
 >Re: Javamonitor help (From: Guido Neitzer <email@hidden>)
 >Re: Javamonitor help (From: James Cicenia <email@hidden>)

  • Prev by Date: Re: Javamonitor help
  • Next by Date: jdbc adaptor
  • Previous by thread: Re: Javamonitor help
  • Next by thread: Re: Javamonitor help - FIXED
  • Index(es):
    • Date
    • Thread