A customer of mine has a very old WebObjects app running on an old Sun Solaris box. The app was built on WindowsXP with Project Builder. No Wonder anywhere to be seen.
We are trying to get this app (the xyz.woa) up and running on a MacMini OS X 10.9.5. We have both Java 1.6 and Java 8 available. We succeeded to start the app via Monitor. The default Main shows but the app fails with the following exception when the code tries to execute this line:
loggedUser = (ZpdUser)EOUtilities.objectMatchinKeyAncValue(ec, "ZpdUser", "sUserId", userId);
Exception logging in User: com.webobjects.foundation.NSForwardException [java.lang.NoSuchFieldError] _EOGlobalModelLock:java.lang.NoSuchFieldError: _EOGlobalModelLock com.webobjects.foundation.NSForwardException [java.lang.NoSuchFieldError] _EOGlobalModelLock:java.lang.NoSuchFieldError: _EOGlobalModelLock at com.webobjects.foundation.NSForwardException._runtimeExceptionForThrowable(NSForwardException.java:39) at com.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:124) at com.webobjects.foundation.NSNotificationCenter$_Entry.invokeMethod(NSNotificationCenter.java:588) at com.webobjects.foundation.NSNotificationCenter.postNotification(NSNotificationCenter.java:532) at com.webobjects.foundation.NSNotificationCenter.postNotification(NSNotificationCenter.java:562) at com.webobjects.eocontrol.EOObjectStoreCoordinator.requestStore(EOObjectStoreCoordinator.java:223) at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectStoreForFetchSpecification(EOObjectStoreCoordinator.java:287) at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:476) at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069) at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4444) at com.webobjects.eoaccess.EOUtilities.objectsMatchingValues(EOUtilities.java:216) at com.webobjects.eoaccess.EOUtilities.objectsMatchingKeyAndValue(EOUtilities.java:190) at com.webobjects.eoaccess.EOUtilities.objectMatchingKeyAndValue(EOUtilities.java:320) at LoginUser.login(LoginUser.java:51) at DirectAction._doLogin(DirectAction.java:42) at DirectAction.zpdGuestLoginAction(DirectAction.java:31) 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:597) at com.webobjects.appserver.WODirectAction.performActionNamed(WODirectAction.java:144) at com.webobjects.appserver._private.WOActionRequestHandler._handleRequest(WOActionRequestHandler.java:259) at com.webobjects.appserver._private.WOActionRequestHandler.handleRequest(WOActionRequestHandler.java:158) at com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687) 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:695) Caused by: java.lang.NoSuchFieldError: _EOGlobalModelLock at ZpdDB$UnbrokenEOModel.entityNamed(ZpdDB.java:41) at com.webobjects.eoaccess.EOModelGroup.entityNamed(EOModelGroup.java:493) at com.webobjects.eoaccess.EODatabaseContext._cooperatingObjectStoreNeeded(EODatabaseContext.java:1169) 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:597) at com.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java:122)
The very same code running against the same database works from Solaris. I have currently no easy access to the source (somewhere on a XP Machine). Any idea what could be wrong? For a test the customer has copied the xyz.woa directory to a different Sun workstation (where Apple WebObjects runtime has been installed) and tried it there with the very same exception. So it looks as if we miss something in the environment setup. Question is: What?
Background: The customer has once (>4 years ago) asked me to port the application to the modern world but then cancelled the project. And now the old Solaris box is dying and the customer desparately needs a replacement deployment environment. About a dozen apps have been moved over from Soalris to OS X with no problem (all Wonder), just this baby refuses to work (no Wonder - pun intended). And of course we have no time now to Wonderize, recompile, and test things.
Thanks for any hints ---markus---
|