Q: thanks, that makes sense.
Funny after all these years  to just stumble upon seeing this for the first 
time...

-G

On Jun 30, 2011, at 6:52 AM, Q wrote:

> This is a filesystem induced issue. It happens when you use a case 
> insensitive filesystem and try to dynamically load a class with the correct 
> name, but the wrong case. It shouldn't be an issue in production as the 
> classes will be bundled in jar files. This isn't specific to WO or Wonder, it 
> can happen to any java application that loads classes dynamically from a case 
> insensitive filesystem.
> 
> On 30/06/2011, at 3:16 PM, George Domurot wrote:
> 
>> I upgraded to the latest Wonder Git repo this past weekend.  And, an 
>> interesting situation occurs when hitting a URL that has a typo in the 
>> action class or method names.
>> 
>> For example:
>> 
>>      .../wa/person ... attempts to load a model Person object, results in 
>> NoClassDefFoundError
>> 
>> triggered at this point:
>> 
>>      at 
>> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
>>      at 
>> er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:1984)
>> 
>> However,
>> 
>>      .../wa/Person ... is ignored as expected, since I suppose it finds the 
>> Person class and opts to ignore it since it's of no use/wrong type.
>> 
>> The same error occurs if you attempt to load:
>> 
>>      ../wa/directAction/doSomething ... since DirectAction exists
>> 
>> Jun 29 22:01:54 App[57419] WARN  NSLog  - <WOWorkerThread id=3 socket=null> 
>> Throwable occurred: java.lang.NoClassDefFoundError: 
>> com/domain/app/directAction (wrong name: com/domain/app/DirectAction)
>> [2011-6-29 22:1:54 PDT] <WorkerThread3> java.lang.NoClassDefFoundError: 
>> com/domain/app/directAction (wrong name: com/domain/app/DirectAction)
>>      at java.lang.ClassLoader.defineClass1(Native Method)
>>      at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
>>      at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
>>      at 
>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>>      at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>>      at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>>      at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>>      at java.security.AccessController.doPrivileged(Native Method)
>>      at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>>      at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
>>      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>>      at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
>>      at java.lang.Class.forName0(Native Method)
>>      at java.lang.Class.forName(Class.java:169)
>>      at 
>> com.webobjects.foundation._NSUtilities._searchForClassInPackages(_NSUtilities.java:415)
>>      at 
>> com.webobjects.foundation._NSUtilities._classWithPartialName(_NSUtilities.java:373)
>>      at 
>> com.webobjects.foundation._NSUtilities.classWithName(_NSUtilities.java:335)
>>      at 
>> com.webobjects.appserver._private.WOBundle.lookForClassInAllBundles(WOBundle.java:92)
>>      at 
>> com.webobjects.appserver._private.WOActionRequestHandler._actionClassForName(WOActionRequestHandler.java:70)
>>      at 
>> com.webobjects.appserver._private.WOActionRequestHandler.getRequestActionClassAndNameForPath(WOActionRequestHandler.java:389)
>>      at 
>> com.webobjects.appserver._private.WOActionRequestHandler._handleRequest(WOActionRequestHandler.java:226)
>>      at 
>> com.webobjects.appserver._private.WOActionRequestHandler.handleRequest(WOActionRequestHandler.java:158)
>>      at 
>> er.extensions.appserver.ERXDirectActionRequestHandler.handleRequest(ERXDirectActionRequestHandler.java:124)
>>      at 
>> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
>>      at 
>> er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:1984)
>>      at 
>> er.extensions.appserver.ERXApplication.dispatchRequest(ERXApplication.java:1949)
>>      at 
>> com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144)
>>      at 
>> com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:226)
>>      at java.lang.Thread.run(Thread.java:680)
>> 
>> Interesting too, none of the standard Application level exception handling 
>> methods get called for a graceful response.
>> 
>> I noticed a related post by Pascal last year without a noted solution:
>> http://wiki.objectstyle.org/confluence/display/WOL/mail/6717622
>> 
>> Any known fixes?
>> 
>> Thanks,
>> George _______________________________________________
>> 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/qdolan%40gmail.com
>> 
>> This email sent to [email protected]
> 

 _______________________________________________
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