We have a WO app that we deploy as a servlet into Tomcat. We have had
occasions where Tomcat will hang causing our application to become
inaccessible. I think I have narrowed the problem down an issue that is
logged when this occurs.
Exception occurred while handling request:
com.webobjects.appserver.WOPageNotFoundException: <.../Application>:
Unable to create page
'OR3Vn2AxtWCKZtdwx7mAJ0/apps/infocenter/resources/images/Revoke-button.gif'.
<http-8226-Processor221>
com.webobjects.appserver.WOPageNotFoundException: <../Application>: Unable
to create page
'OR3Vn2AxtWCKZtdwx7mAJ0/apps/infocenter/resources/images/Revoke-button.gif'.
at
com.webobjects.appserver.WOApplication.pageWithName(WOApplication.java:1968)
at
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
paredSession(WOComponentRequestHandler.java:273)
at
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
paredApplication(WOComponentRequestHandler.java:322)
at
com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest(W
OComponentRequestHandler.java:358)
at
com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest(WO
ComponentRequestHandler.java:435)
at
com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:13
06)
at
com.webobjects.jspservlet._WOApplicationWrapper.servletDispatchRequest(_WOAp
plicationWrapper.java:118)
at
com.webobjects.jspservlet.WOServletAdaptor._handleRequest(WOServletAdaptor.j
ava:678)
at
com.webobjects.jspservlet.WOServletAdaptor.doGet(WOServletAdaptor.java:660)
......
Tomcat shows the stuck threads urls as
http://<host>:<port>/MyApp/WebObjects/MyApp.woa/wo/OR3Vn2AxtWCKZtdwx7mAJ0/ap
ps/infocenter/resources/images/Revoke-button.gif.
This resource was set as a relative URL in a piece of content that was cut
and pasted into our tool and was being previewed. The browser saw the
relative URL ( /apps/infocenter/resources/images/Revoke-button.gif) and
appended it to the end of the WO app
http://<host>:<port>/MyApp/WebObjects/MyApp.woa/wo. This sent the request
thru the WebObjects servlet. This ended up causing the WOSession to be
locked up trying to resolve the path to the resource. The Session could not
be checked out from the WOSessionStore, eventually causing all of the new
incoming requests to pile up and kill both Tomcat and our WO application.
The thread dump when the problem occurred looked like:
...
at java.lang.Object.wait(Native Method)
- waiting on <0x8c89e608> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at java.lang.Object.wait(Unknown Source)
at
com.webobjects.appserver.WOSessionStore.checkOutSessionWithID(WOSessionStore
.java:207)
- locked <0x8c89e608> (a
com.webobjects.appserver.WOSessionStore$TimeoutEntry)
at
com.webobjects.appserver.WOApplication.restoreSessionWithID(WOApplication.ja
va:1546)
at
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre
paredApplication(WOComponentRequestHandler.java:314)
at
com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest(W
OComponentRequestHandler.java:358)
at
com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest(WO
ComponentRequestHandler.java:435)
at
com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:13
06)
at
com.webobjects.jspservlet._WOApplicationWrapper.servletDispatchRequest(_WOAp
plicationWrapper.java:118)
at
com.webobjects.jspservlet.WOServletAdaptor._handleRequest(WOServletAdaptor.j
ava:678)
...
It looks like the only way to fix the problem is to filter unknown requests
from making it to the WO adaptor in the first place. Seems like the
WOServletAdaptor should be a more robust in dealing with non IM requests
that are coming in. The problem is with at least WO 5.2 and higher.
Any thoughts or feedback are welcome.
Dov Rosenberg
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [EMAIL PROTECTED]