Hi,
When we bounce our applications, for the first minute or so after the application has finished launching, we get a bunch of exceptions in our logs:
Unabled to find an EOClassDescription for objects of class ca.shopshop.ssmodel.Media.
The entity that has the problem varies for every launch. Sometimes it is Media, sometimes it is PaymentInfo, sometimes it is Merchant, or Product, etc. This seems to also cause any relationships to these entities to come back null in situations where they would (or should) never be null.
After about a minute or so, the application continues to work just fine.
In the Application constructor, we have a method that gets called to setup the database connections. It loops through all the models in the defaultGroup, then sets the connection dictionary information. Then, after that gets done, we load up a bunch of objects into the shared editing context.
It almost seems like we're getting requests before the application is ready to handle them and hasn't finished loading in the models completely.
Is there any way to tell the WO adaptor when we're ready to accept connections? Or perhaps there's something else going wrong here.
Our production environment is WO 5.3 on OS X Server 10.4.x
Here's the full trace:
Exception: com.webobjects.foundation.NSForwardException for java.lang.IllegalStateException: Unabled to find an EOClassDescription for objects of class ca.shopshop.ssmodel.Media at com.webobjects.eocontrol.EOGenericRecord.__setClassDescription(EOGenericRecord.java:98) at com.webobjects.eocontrol.EOGenericRecord.<init>(EOGenericRecord.java:72) at ca.shopshop.ssmodel.SSGenericRecord.<init>(SSGenericRecord.java:16) at ca.shopshop.ssmodel._Media.<init>(_Media.java:111) at ca.shopshop.ssmodel.Media.<init>(Media.java:28) at sun.reflect.GeneratedConstructorAccessor4.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at com.webobjects.foundation._NSUtilities.instantiateObjectWithConstructor(_NSUtilities.java:594) at com.webobjects.eoaccess.EOEntityClassDescription.createInstanceWithEditingContext(EOEntityClassDescription.java:207) at com.webobjects.eoaccess.EODatabaseContext.faultForGlobalID(EODatabaseContext.java:3553) at com.webobjects.eocontrol.EOObjectStoreCoordinator.faultForGlobalID(EOObjectStoreCoordinator.java:593) at com.webobjects.eocontrol.EOEditingContext.faultForGlobalID(EOEditingContext.java:3670) at com.webobjects.eoaccess.EODatabaseContext._objectFaultWithSnapshotRelationshipEditingContext(EODatabaseContext.java:2534) at com.webobjects.eoaccess.EODatabaseContext._fireDeferredFaultWithSourceObject(EODatabaseContext.java:2575) at com.webobjects.eoaccess.EOAccessDeferredFaultHandler.createFaultForDeferredFault(EOAccessDeferredFaultHandler.java:45) at com.webobjects.eocontrol.EOCustomObject.willReadRelationship(EOCustomObject.java:1302) at com.webobjects.eocontrol._EOMutableKnownKeyDictionary$Initializer$_LazyGenericRecordBinding.valueInObject(_EOMutableKnownKeyDictionary.java:560) at com.webobjects.eocontrol.EOCustomObject.storedValueForKey(EOCustomObject.java:1736) at com.webobjects.eoaccess.EODatabaseContext.databaseOperationForObject(EODatabaseContext.java:5005) at com.webobjects.eoaccess.EODatabaseContext.valuesForKeys(EODatabaseContext.java:6701) at com.webobjects.eocontrol.EOObjectStoreCoordinator.valuesForKeys(EOObjectStoreCoordinator.java:341) at com.webobjects.eoaccess.EOQualifierSQLGeneration$_KeyValueQualifierSupport.schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:418) at com.webobjects.eoaccess.EOQualifierSQLGeneration$Support._schemaBasedQualifierWithRootEntity(EOQualifierSQLGeneration.java:165) at com.webobjects.eoaccess.EODatabaseChannel.selectObjectsWithFetchSpecification(EODatabaseChannel.java:209) at com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(EODatabaseContext.java:3205) at com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3346) at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:539) at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4114) at com.webobjects.eoaccess.EODatabaseContext.objectsForSourceGlobalID(EODatabaseContext.java:4260) at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsForSourceGlobalID(EOObjectStoreCoordinator.java:682) at com.webobjects.eocontrol.EOEditingContext.objectsForSourceGlobalID(EOEditingContext.java:3965) at com.webobjects.eoaccess.EODatabaseContext._fireArrayFault(EODatabaseContext.java:4427) at com.webobjects.eoaccess.EOAccessArrayFaultHandler.completeInitializationOfObject(EOAccessArrayFaultHandler.java:70) at com.webobjects.eocontrol._EOCheapCopyMutableArray.willRead(_EOCheapCopyMutableArray.java:38) at com.webobjects.eocontrol._EOCheapCopyMutableArray.objectsNoCopy(_EOCheapCopyMutableArray.java:87) at com.webobjects.foundation.NSMutableSet.addObjectsFromArray(NSMutableSet.java:248) at ca.shopshop.ssmodel.Product.activeNonExpiredCoupons(Product.java:2041) at ProductDetailsPage.appendToResponse(ProductDetailsPage.java:54) at com.webobjects.appserver.WOComponent._appendPageToResponse(WOComponent.java:1388) at com.webobjects.appserver.WOComponent._generateResponseInContext(WOComponent.java:1356) at com.webobjects.appserver.WOComponent.generateResponse(WOComponent.java:1351) at ca.shopshop.sscommon.SSDirectAction.performActionNamed(SSDirectAction.java:119) at com.webobjects.appserver._private.WOActionRequestHandler._handleRequest(WOActionRequestHandler.java:240) at com.webobjects.appserver._private.WOActionRequestHandler.handleRequest(WOActionRequestHandler.java:145) at com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1306) at ca.shopshop.sscommon.SSApplication.dispatchRequest(SSApplication.java:385) at Application.dispatchRequest(Application.java:56) at com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:173) at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:254) at java.lang.Thread.run(Thread.java:613)
Thanks,
____________________________________________________________________ Brendan Duddridge | CTO | 403-277-5591 x24 | email@hidden ClickSpace Interactive Inc. Suite L100, 239 - 10th Ave. SE Calgary, AB T2G 0V9
http://www.clickspace.com |