Re: WOServletAdaptor trouble with tomcat
Re: WOServletAdaptor trouble with tomcat
- Subject: Re: WOServletAdaptor trouble with tomcat
- From: Jake MacMullin <email@hidden>
- Date: Mon, 13 Aug 2007 11:32:02 +0100
Jonny,
I had a quick look at the ERXApplication source and I think the
problem you are experiencing could be due to the fact that an
application's 'main' method is not invoked when it is built as a WAR
and deployed in a servlet container. Therefore, any code in the
application's constructor that makes the assumption that the main
method has been run may cause problems. In the case of
ERXApplication, my guess is that the call to allFrameworks.size() in
the second line of the constructor is resulting in a null pointer
exception.
Debugging this problem isn't helped at all by the fact that when a
WebObjects application is deployed in a servlet container and has a
problem in the constructor, you get the generic
"java.lang.reflect.InvocationTargetException" and not a decent stack
trace. In order to simplify debugging of start-up problems with
applications deployed to servlet containers, I try to do as little in
the constructor as possible and use the
WOApplication.ApplicationDidFinishLaunchingNotification to defer any
application initialisation code until after the application has been
constructed. In this way, you will get a decent stack-trace showing
you the underlying cause of the problem.
Regards,
Jake MacMullin
On 13 Aug 2007, at 06:27, Jonathan Meijer wrote:
Hi,
I have been trying to deploy on Tomcat a WARed application. The issue
I get is that Tomcat logs a bunch of stuff including "- Marking
servlet WOServletAdaptor as unavailable" (see the full log below) when
I fire up the app, and that going to the app's URL
(http://localhost:8080/TestProject/WebObjects/) gives the nice little
error page "HTTP Status 404 - Servlet WOServletAdaptor is not
available".
This only happens when my Application class extends ERXApplication and
not when it extends WOApplication. I have tried Eclipse 3.2.2 and
3.3, upgraded WOLips, upgraded Wonder to the latest frameworks, and
made a very simple application with a Main component with simple
static HTML to make sure it was nothing else.
The interesting part is that the exception presented is, as I
understand what's "under the hood", impossible! Specifically,
_NSUtilities.instantiateObject should only call
_NSUtilities._explainInstantiationException if arguments were passed
to the specified constructor, which WOApplication.primeApplication
does not.
Any ideas?
Jonny Meijer
---
Aug 13, 2007 12:47:00 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive TestProject.war
Classes and frameworks will be loaded out of the WEB-INF/lib and
WEB-INF/classes directories.
MainBundle will be set to TestProject
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WODefaultUndoStackLimit=10
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
NSProjectSearchPath=("..")
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOGenerateWSDL=true
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOMaxHeaders=200
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOCachingEnabled=false
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOFrameworksBaseURL=/WebObjects/Frameworks
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOAllowRapidTurnaround=false
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOAllowsConcurrentRequestHandling=false
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOAllowsCacheControlHeader=true
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOSMTPHost=smtp
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOAcceptMalformedCookies=false
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOContextClassName=com.webobjects.jspservlet.WOServletContext
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOMissingResourceSearchEnabled=true
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOSessionStoreClassName=com.webobjects.jspservlet.WOServletSessionStor
e
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WODebuggingEnabled=true
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WODisplayExceptionPages=true
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOStatisticsStoreSessionMax=50
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOAutoOpenClientApplication=false
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOAdaptorURL=http://localhost/TestProject/WebObjects
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOApplicationBaseURL=/WebObjects
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOAutoOpenInBrowser=false
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
WOIncludeCommentsInResponse=true
<TestProject>[2007-08-13 00:47:07 EDT] <http-8080-Processor23>
------------------------
java.lang.reflect.InvocationTargetException
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.jspservlet.WOServletAdaptor._applicationInit
(WOServletAdaptor.java:415)
at com.webobjects.jspservlet.WOServletAdaptor.initStatics
(WOServletAdaptor.java:78)
at com.webobjects.jspservlet.WOServletAdaptor.init
(WOServletAdaptor.java:629)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet
(StandardWrapper.java:1139)
at org.apache.catalina.core.StandardWrapper.load
(StandardWrapper.java:966)
at org.apache.catalina.core.StandardContext.loadOnStartup
(StandardContext.java:3956)
at org.apache.catalina.core.StandardContext.start
(StandardContext.java:4230)
at org.apache.catalina.core.ContainerBase.addChildInternal
(ContainerBase.java:760)
at org.apache.catalina.core.ContainerBase.addChild
(ContainerBase.java:740)
at org.apache.catalina.core.StandardHost.addChild
(StandardHost.java:544)
at org.apache.catalina.startup.HostConfig.deployWAR
(HostConfig.java:825)
at org.apache.catalina.startup.HostConfig.deployApps
(HostConfig.java:515)
at org.apache.catalina.startup.HostConfig.check
(HostConfig.java:1220)
at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown
Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.commons.modeler.BaseModelMBean.invoke
(BaseModelMBean.java:457)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke
(DynamicMetaDataImpl.java:213)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke
(MetaDataImpl.java:220)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke
(DefaultMBeanServerInterceptor.java:815)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke
(JmxMBeanServer.java:784)
at org.apache.catalina.manager.ManagerServlet.check
(ManagerServlet.java:1397)
at org.apache.catalina.manager.HTMLManagerServlet.doPost
(HTMLManagerServlet.java:214)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:174)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
(PoolTcpEndpoint.java:528)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt
(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool
$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.webobjects.foundation.NSForwardException
[java.lang.NullPointerException] null: <Application> failed
instantiation. Exception thrown :
java.lang.NullPointerException: null
at
com.webobjects.foundation._NSUtilities._explainInstantiationException(
_NSUtilities.java:567)
at com.webobjects.foundation._NSUtilities.instantiateObject
(_NSUtilities.java:581)
at com.webobjects.appserver.WOApplication.primeApplication
(WOApplication.java:411)
at com.webobjects.appserver.WOApplication.primeApplication
(WOApplication.java:459)
... 45 more
- Marking servlet WOServletAdaptor as unavailable
- Servlet /TestProject threw load() exception
javax.servlet.UnavailableException: Error initializing servlet
adaptor: null
at
com.webobjects.jspservlet.WOServletAdaptor._applicationInit
(WOServletAdaptor.java:435)
at com.webobjects.jspservlet.WOServletAdaptor.initStatics
(WOServletAdaptor.java:78)
at com.webobjects.jspservlet.WOServletAdaptor.init
(WOServletAdaptor.java:629)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet
(StandardWrapper.java:1139)
at org.apache.catalina.core.StandardWrapper.load
(StandardWrapper.java:966)
at org.apache.catalina.core.StandardContext.loadOnStartup
(StandardContext.java:3956)
at org.apache.catalina.core.StandardContext.start
(StandardContext.java:4230)
at org.apache.catalina.core.ContainerBase.addChildInternal
(ContainerBase.java:760)
at org.apache.catalina.core.ContainerBase.addChild
(ContainerBase.java:740)
at org.apache.catalina.core.StandardHost.addChild
(StandardHost.java:544)
at org.apache.catalina.startup.HostConfig.deployWAR
(HostConfig.java:825)
at org.apache.catalina.startup.HostConfig.deployApps
(HostConfig.java:515)
at org.apache.catalina.startup.HostConfig.check
(HostConfig.java:1220)
at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown
Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.commons.modeler.BaseModelMBean.invoke
(BaseModelMBean.java:457)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke
(DynamicMetaDataImpl.java:213)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke
(MetaDataImpl.java:220)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke
(DefaultMBeanServerInterceptor.java:815)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke
(JmxMBeanServer.java:784)
at org.apache.catalina.manager.ManagerServlet.check
(ManagerServlet.java:1397)
at org.apache.catalina.manager.HTMLManagerServlet.doPost
(HTMLManagerServlet.java:214)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:174)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
(PoolTcpEndpoint.java:528)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt
(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool
$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
@bbc.co.uk
This email sent to email@hidden
http://www.bbc.co.uk/
This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated.
If you have received it in error, please delete it from your system.
Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately.
Please note that the BBC monitors e-mails sent or received.
Further communication will signify your consent to this.
_______________________________________________
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