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 protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/jake.macmullin %40bbc.co.uk

This email sent to [EMAIL PROTECTED]


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 protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to