• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: recovering from a validation exception
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: recovering from a validation exception


  • Subject: Re: recovering from a validation exception
  • From: Chuck Hill <email@hidden>
  • Date: Fri, 22 Apr 2005 09:41:18 -0700

I don't know much more about JC than Sacha does but...

On Apr 21, 2005, at 2:04 PM, Alexandre Mainville wrote:

Thanks again for helping.

I'm just starting out with java client apps myself, I'm starting to get the bad feeling java client apps have a rather thin user base. Don't understand why, the technology looks great and I'm certain that if I could get it to work as advertised it would be a wonderful tool.

It is cool, but a tad undercooked and under-documented. It is not intended for internet use so it does not get used as much as the HTML side of things. Be prepared to struggle.


From what I have managed to grasp so far I think EOGeneralAdaptorException are used only sever-side because they rely on EOAccess while clients use EODistribution which leads to the interesting question: how does one trap an optimistic locking failure on the client? I'm still working on that one...

I created a fresh new db to run the test so the PK of 1 is ok.

Here is the trace of what happens during execution (sorry about the long post...)

Notice that after the initial fetch, no other SQL is sent to the db so I'm guessing it's complaining about differences in the snapshot cache on the server and the snapshot cache on the client ????

I think that exception is referring to a difference in the EO's values in the EC on the server and on the client.
Optimistic locking failure: The object with global ID _EOIntegralKeyGlobalID[Test (java.lang.Integer)1] has been changed by another client
Sounds like what would be raised if another client had saved and updated the object store and snapshot. The changes would have been merged into the editing contexts for this client and when the client save hits the server the old values don't match. As you only have a single client connected this would appear to be a bug (or you are doing something very bad in your code). It almost looks as if the previous, failed, save managed to update the snapshot. This should only happen in the case of a successful save. Troubleshooting this will be difficult. You will probably need to make a subclass of EOEditingContext so that you can log before and after the call to super.saveChanges(). EOEditingContext has methods to log out the current values and the committed snapshot of an object. Comparing those at various points may help.

Also, check your code to ensure that you are not violating any of this:
http://www.wodev.com/cgi-bin/WebObjects/WODev.woa/wa/Main? wikiPage=EOFCommandments



Chuck



Very grateful for your help
Cheers

Alex

[Session started at 2005-04-21 16:39:54 -0400.]
Reading MacOSClassPath.txt ...
Launching temp.woa ...
java -XX:NewSize=2m -Xmx64m -Xms32m -DWORootDirectory="/System" -DWOLocalRootDirectory="" -DWOUserDirectory="/Users/alex/Projects/temp/build" -DWOEnvClassPath="" -DWOApplicationClass=Application -DWOPlatform=MacOS -Dcom.webobjects.pid=20086 -classpath WOBootstrap.jar com.webobjects._bootstrap.WOBootstrap
appRoot is /Users/alex/Projects/temp/build/temp.woa/Contents
Loading /Users/alex/Projects/temp/build/temp.woa/Contents/MacOS/ MacOSClassPath.txt
Generated classpath:
/Users/alex/Projects/temp/build/temp.woa/Contents/Resources/Java/ temp.jar
/System/Library/Frameworks/JavaFoundation.framework/Resources/Java/ javafoundation.jar
/System/Library/Frameworks/JavaEOControl.framework/Resources/Java/ javaeocontrol.jar
/System/Library/Frameworks/JavaEOAccess.framework/Resources/Java/ javaeoaccess.jar
/System/Library/Frameworks/JavaWebObjects.framework/Resources/Java/ javawebobjects.jar
/System/Library/Frameworks/JavaWOExtensions.framework/Resources/Java/ JavaWOExtensions.jar
/System/Library/Frameworks/JavaXML.framework/Resources/Java/ javaxml.jar
/System/Library/Frameworks/JavaEOApplication.framework/Resources/Java/ javaeoapplication.jar
/System/Library/Frameworks/JavaEODistribution.framework/Resources/ Java/javaeodistribution.jar
/System/Library/Frameworks/JavaEOInterface.framework/Resources/Java/ javaeointerface.jar
/System/Library/Frameworks/JavaEOInterfaceSwing.framework/Resources/ Java/javaeointerfaceswing.jar
/System/Library/Frameworks/JavaJDBCAdaptor.framework/Resources/Java/ javajdbcadaptor.jar
/Library/Frameworks/PostgresqlPlugIn.framework/Resources/Java/ postgresqlplugin.jar
/Users/alex/Library/Java
/Library/Java/
/System/Library/Java/
/Network/Library/Java
/System/Library/Frameworks/JavaVM.framework/Classes/classes.jar
/System/Library/Frameworks/JavaVM.framework/Classes/ui.jar
/Library/WebObjects/Extensions/activation.jar
/Library/WebObjects/Extensions/avalon-framework-4.1.2.jar
/Library/WebObjects/Extensions/axis-ant.jar
/Library/WebObjects/Extensions/axis.jar
/Library/WebObjects/Extensions/clutil.jar
/Library/WebObjects/Extensions/commons-discovery.jar
/Library/WebObjects/Extensions/commons-logging.jar
/Library/WebObjects/Extensions/ejb-1.0.jar
/Library/WebObjects/Extensions/jaas_1.0.jar
/Library/WebObjects/Extensions/jaxrpc.jar
/Library/WebObjects/Extensions/jca_1.0.jar
/Library/WebObjects/Extensions/log4j-1.2.4.jar
/Library/WebObjects/Extensions/logkit-1.0.1.jar
/Library/WebObjects/Extensions/saaj.jar
/Library/WebObjects/Extensions/wsdl4j.jar
/Library/WebObjects/Extensions/
[2005-04-21 16:39:58 EDT] <main> WOMaxIOBufferSize=8196
[2005-04-21 16:39:58 EDT] <main> WOWorkerThreadCountMin=16
[2005-04-21 16:39:58 EDT] <main> WOSocketMonitorSleepTime=50
[2005-04-21 16:39:58 EDT] <main> WODirectConnectEnabled=true
[2005-04-21 16:39:58 EDT] <main> WOIncludeCommentsInResponse=false
[2005-04-21 16:39:58 EDT] <main> WOWorkerThreadCount=8
[2005-04-21 16:39:58 EDT] <main> WOAdaptorURL=http://localhost/cgi-bin/WebObjects
[2005-04-21 16:39:58 EDT] <main> WOPlatform=MacOS
[2005-04-21 16:39:58 EDT] <main> WODebuggingEnabled=true
[2005-04-21 16:39:58 EDT] <main> WOEnvClassPath=
[2005-04-21 16:39:58 EDT] <main> WOListenQueueSize=128
[2005-04-21 16:39:58 EDT] <main> WOMissingResourceSearchEnabled=true
[2005-04-21 16:39:58 EDT] <main> WOSessionStoreClassName=WOServerSessionStore
[2005-04-21 16:39:58 EDT] <main> WOContextClassName=WOContext
[2005-04-21 16:39:58 EDT] <main> WOCachingEnabled=false
[2005-04-21 16:39:58 EDT] <main> WOApplicationClass=Application
[2005-04-21 16:39:58 EDT] <main> WOAcceptMalformedCookies=false
[2005-04-21 16:39:58 EDT] <main> NSProjectSearchPath=("..")
[2005-04-21 16:39:58 EDT] <main> WOMonitorEnabled=false
[2005-04-21 16:39:58 EDT] <main> WOAllowRapidTurnaround=true
[2005-04-21 16:39:58 EDT] <main> WORootDirectory=/System
[2005-04-21 16:39:58 EDT] <main> WOLocalRootDirectory=
[2005-04-21 16:39:58 EDT] <main> WOGenerateWSDL=true
[2005-04-21 16:39:58 EDT] <main> WOWorkerThreadCountMax=256
[2005-04-21 16:39:58 EDT] <main> WOAllowsConcurrentRequestHandling=false
[2005-04-21 16:39:58 EDT] <main> WOAdaptor=WODefaultAdaptor
[2005-04-21 16:39:58 EDT] <main> WOSessionTimeOut=3600
[2005-04-21 16:39:58 EDT] <main> WOMaxSocketIdleTime=180000
[2005-04-21 16:39:58 EDT] <main> WODefaultUndoStackLimit=10
[2005-04-21 16:39:58 EDT] <main> WOAutoOpenClientApplication=true
[2005-04-21 16:39:58 EDT] <main> WOAutoOpenInBrowser=true
[2005-04-21 16:39:58 EDT] <main> WOApplicationBaseURL=/WebObjects
[2005-04-21 16:39:58 EDT] <main> WOMaxHeaders=200
[2005-04-21 16:39:58 EDT] <main> WOLifebeatEnabled=true
[2005-04-21 16:39:58 EDT] <main> WOAllowsCacheControlHeader=true
[2005-04-21 16:39:58 EDT] <main> WOSMTPHost=smtp
[2005-04-21 16:39:58 EDT] <main> WOFrameworksBaseURL=/WebObjects/Frameworks
[2005-04-21 16:39:58 EDT] <main> WOAdditionalAdaptors=()
[2005-04-21 16:39:58 EDT] <main> WOLifebeatDestinationPort=1085
[2005-04-21 16:39:58 EDT] <main> WOPort=55555
[2005-04-21 16:39:58 EDT] <main> WOLifebeatInterval=30
[2005-04-21 16:39:58 EDT] <main> WOSocketCacheSize=100
[2005-04-21 16:39:58 EDT] <main> WOUserDirectory=/Users/alex/Projects/temp/build
[2005-04-21 16:39:58 EDT] <main> WODisplayExceptionPages=true
[2005-04-21 16:39:58 EDT] <main> com.webobjects.pid = 20086
[2005-04-21 16:39:58 EDT] <main> ------------------------
[2005-04-21 16:39:58 EDT] <main> Created adaptor of class WODefaultAdaptor on port 55555 and address mini.groupemetrik.com/192.168.1.109 with WOWorkerThread minimum of 16 and maximum of 256
[2005-04-21 16:39:58 EDT] <main> NSBundle is unable to find "ExtensionsForResources.plist" in the main bundle. Ignoring optional configuration file.
[2005-04-21 16:39:58 EDT] <main> Application project found: Will locate resources in '' rather than '/Users/alex/Projects/temp/build/temp.woa' .
[2005-04-21 16:39:59 EDT] <main> *** The application has found the following opened, development-mode ProjectBuilder projects: (<com.webobjects.appserver._private.WOProjectBundle: projectName='temp'; bundlePath='/Users/alex/Projects/temp/build/temp.woa'; projectPath=''>)
[2005-04-21 16:39:59 EDT] <main> Creating LifebeatThread now with: temp 55555 mini.groupemetrik.com/192.168.1.109 1085 30000
Welcome to temp!
[2005-04-21 16:39:59 EDT] <main> Opening client application with script:
/Users/alex/Projects/temp/build/temp.woa/Contents/MacOS/temp_Client http://mini.groupemetrik.com:55555/cgi-bin/WebObjects/temp.woa
[2005-04-21 16:40:00 EDT] <main> The URL for webserver connect is:
http://mini.groupemetrik.com/cgi-bin/WebObjects/temp.woa/-55555
The URL for direct connect is:
http://mini.groupemetrik.com:55555/cgi-bin/WebObjects/temp.woa
[2005-04-21 16:39:59 EDT] <main> Waiting for requests...


>>>>>>>>>>>>>>>>>>>>>> APPLICATION STARTED


[2005-04-21 16:40:04 EDT] <WorkerThread0> com.webobjects.eoaccess.EODatabase@bb73b0 added model at path "file:/Users/alex/Projects/temp/build/temp.woa/Contents/Resources/ temp.eomodeld".
[2005-04-21 16:40:04 EDT] <WorkerThread0> Using JDBCPlugIn 'PostgresqlPlugIn' for JDBCAdaptor@9573108
[2005-04-21 16:40:04 EDT] <WorkerThread0> connecting with dictionary: {plugin = "PostgresqlPlugIn"; username = "alex"; driver = "org.postgresql.Driver"; password = "<password deleted for log>"; URL = "jdbc:postgresql:test"; }
[2005-04-21 16:40:04 EDT] <WorkerThread0> === Begin Internal Transaction
[2005-04-21 16:40:04 EDT] <WorkerThread0> evaluateExpression: <com.webobjects.jdbcadaptor.PostgresqlExpression: "SELECT t0.key, t0.name FROM test t0">
[2005-04-21 16:40:04 EDT] <WorkerThread0> 1 row(s) processed
[2005-04-21 16:40:04 EDT] <WorkerThread0> === Commit Internal Transaction


>>>>>>>>>>>>>>>>>>>>>>> WINDOW VISIBLE, FIELDS POPULATED WITH DATA
>>>>>>>>>>>>>>>>>>>>>>> USER HITS SAVE FOR THE FIRST TIME HERE

[2005-04-21 16:40:25 EDT] <WorkerThread0> com.webobjects.foundation.NSValidation$ValidationException: always fail...
at TestServer.validateName(TestServer.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja va:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.webobjects.foundation._NSReflectionUtilities._invokeMethodOnObject( _NSReflectionUtilities.java:383)
at com.webobjects.foundation.NSValidation$_MethodBinding.validateValueOnOb ject(NSValidation.java:615)
at com.webobjects.foundation.NSValidation$DefaultImplementation._validateV alueForKey(NSValidation.java:705)
at com.webobjects.eocontrol.EOCustomObject.validateValueForKey(EOCustomObj ect.java:1341)
at com.webobjects.eocontrol.EOCustomObject.validateForSave(EOCustomObject. java:1411)
at com.webobjects.eocontrol.EOCustomObject.validateForUpdate(EOCustomObjec t.java:1490)
at com.webobjects.eocontrol.EOEditingContext.validateTable(EOEditingContex t.java:2177)
at com.webobjects.eocontrol.EOEditingContext.validateChangesForSave(EOEdit ingContext.java:2964)
at com.webobjects.eocontrol.EOEditingContext._prepareForPushChanges(EOEdit ingContext.java:3205)
at com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContext. java:3135)
at com.webobjects.eodistribution.EODistributionContext$_RemoteMethodReceiv er.clientSideRequestSave(EODistributionContext.java:1071)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja va:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.webobjects.foundation.NSSelector.invoke(NSSelector.java:354)
at com.webobjects.foundation.NSSelector._safeInvokeSelector(NSSelector.jav a:108)
at com.webobjects.eodistribution.common._EOServerInvocation.doInvokeWithTa rget(_EOServerInvocation.java:140)
at com.webobjects.eodistribution.EODistributionContext._processClientReque st(EODistributionContext.java:488)
at com.webobjects.eodistribution.EODistributionContext.responseToClientMes sage(EODistributionContext.java:577)
at com.webobjects.eodistribution.WOJavaClientComponent.handleClientRequest (WOJavaClientComponent.java:1105)
at com.webobjects.eodistribution.WOJavaClientComponent.invokeAction(WOJava ClientComponent.java:343)
at com.webobjects.appserver._private.WOComponentReference.invokeAction(WOC omponentReference.java:104)
at com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(W ODynamicGroup.java:101)
at com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamic Group.java:110)
at com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java: 945)
at com.webobjects.appserver.WOSession.invokeAction(WOSession.java:1166)
at com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java: 1377)
at com.webobjects.appserver[2005-04-21 16:40:25 EDT] <WorkerThread0> Server exception: always fail...
._private.WOComponentRequestHandler._dispatchWithPreparedPage(WOCompone ntRequestHandler.java:196)
at com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWi thPreparedSession(WOComponentRequestHandler.java:287)
at com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWi thPreparedApplication(WOComponentRequestHandler.java:322)
at com.webobjects.appserver._private.WOComponentRequestHandler._handleRequ est(WOComponentRequestHandler.java:358)
at com.webobjects.appserver._private.WOComponentRequestHandler.handleReque st(WOComponentRequestHandler.java:432)
at com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.ja va:1308)
at com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread .java:173)
at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.jav a:254)
at java.lang.Thread.run(Thread.java:552)


>>>>>>>>>>>>>>>>>>>>>>> USER GETS A DIALOG WITH VALIDATION ERROR
>>>>>>>>>>>>>>>>>>>>>>> USER HITS SAVE FOR THE SECOND TIME HERE
>>>>>>>>>>>>>>>>>>>>>>> NOTE THE ABSENCE OF ANY SQL?????

[2005-04-21 16:40:30 EDT] <WorkerThread0> java.lang.IllegalStateException: Optimistic locking failure: The object with global ID _EOIntegralKeyGlobalID[Test (java.lang.Integer)1] has been changed by another client
at com.webobjects.eodistribution.EODistributionContext._throwOptimisticLoc kingFailureForGlobalIDIfNecessary(EODistributionContext.java:822)
at com.webobjects.eodistribution.common._EOSavingProxy.replacementEOInEdit ingContext(_EOSavingProxy.java:135)
at com.webobjects.eodistribution.EODistributionContext._replacementObjectF orDecodedObject(EODistributionContext.java:875)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.webobjects.foundation.NSSelector._safeInvokeMethod(NSSelector.java: 120)
at com.webobjects.foundation._NSDelegate._perform(_NSDelegate.java:225)
at com.webobjects.foundation._NSDelegate.perform(_NSDelegate.java:162)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder.decodeO bject(_EOReferenceRecordingCoder.java:559)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder.decodeO bjects(_EOReferenceRecordingCoder.java:587)
at com.webobjects.foundation.NSArray.decodeObject(NSArray.java:1272)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja va:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder$_Decode r.decodeObject(_EOReferenceRecordingCoder.java:704)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder.decodeO bject(_EOReferenceRecordingCoder.java:551)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder.decodeO bjects(_EOReferenceRecordingCoder.java:587)
at com.webobjects.eodistribution.common._EOServerInvocation.decodeObject(_ EOServerInvocation.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja va:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder$_Decode r.decodeObject(_EOReferenceRecordingCoder.java:704)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder.decodeO bject(_EOReferenceRecordingCoder.java:551)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder.decodeO bjects(_EOReferenceRecordingCoder.java:587)
at com.webobjects.foundation.NSArray.decodeObject(NSArray.java:1272)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja va:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder$_Decode r.decodeObject(_EOReferenceRecordingCoder.java:704)
at com.webobjects.eodistribution.common._EOReferenceRecordingCoder.decodeO bject(_EOReferenceRecordingCoder.java:551)
at com.webobjects.eodistribution.EODistributionContext.responseToClientMes sage(EODistributionContext.java:555)
at com.webobjects.eodistribution.WOJavaClientComponent.handleClientRequest (WOJavaClientComponent.java:1105)
at com.webobjects.eodistribution.WOJavaClientComponent.invokeAction(WOJava ClientComponent.java:343)
at com.webobjects.appserver._private.WOComponentReference.invokeAction(WOC omponentReference.java:104)
at com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(W ODynamicGroup.java:101)
at com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamic Group.java:110)
at com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java: 945)
at com.webobjects.appserver.WOSession.invokeAction(WOSession.ja[2005-04 -21 16:40:30 EDT] <WorkerThread0> Server exception: Optimistic locking failure: The object with global ID _EOIntegralKeyGlobalID[Test (java.lang.Integer)1] has been changed by another client
va:1166)
at com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java: 1377)
at com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWi thPreparedPage(WOComponentRequestHandler.java:196)
at com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWi thPreparedSession(WOComponentRequestHandler.java:287)
at com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWi thPreparedApplication(WOComponentRequestHandler.java:322)
at com.webobjects.appserver._private.WOComponentRequestHandler._handleRequ est(WOComponentRequestHandler.java:358)
at com.webobjects.appserver._private.WOComponentRequestHandler.handleReque st(WOComponentRequestHandler.java:432)
at com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.ja va:1308)
at com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread .java:173)
at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.jav a:254)
at java.lang.Thread.run(Thread.java:552)



On 21-Apr-05, at 2:53 PM, Sacha Mallais wrote:

On Apr 20, 2005, at 7:20 pm, Alexandre Mainville wrote:

Unless the WO or EOF framework is doing something I'm not aware of and that is not tracable with EOAdaptorDebugEnabled, I'm certain no changes have been made on the database (I'm the only user on a single instance).

Ok, good.


The app already handles valid optimistic locking exceptions gracefully by warning the user and refaulting.

Here is the exception I get:

I'm not too familiar with the eodistribution framework. I was expecting a EOGeneralAdaptorException.


java.lang.IllegalStateException: Server exception: Optimistic locking failure: The object with global ID _EOIntegralKeyGlobalID[Test (java.lang.Integer)1] has been changed by another client
at com.webobjects.eodistribution.client.EODistributedObjectStore._checkR eturnValuesForExceptions(EODistributedObjectStore.java:565)
at com.webobjects.eodistribution.client.EODistributedObjectStore._send(E ODistributedObjectStore.java:593)
at com.webobjects.eodistribution.client.EODistributedObjectStore.saveCha ngesInEditingContext(EODistributedObjectStore.java:423)
at com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContex t.java:3148)
at temp.client.temp.saveChanges(temp.java:29)
at com.webobjects.eoapplication.EODocumentController._saveIfUserConfirms (EODocumentController.java:670)
at com.webobjects.eoapplication.EODocumentController.save(EODocumentCont roller.java:617)


Is this the first such object in your app? The PK of 1 is a little suspicious.

I'm afraid I'm out of my area of expertise here. Try posting the SQL that gets generated: optimistic locking failures normally only occur if the database has changed, but maybe this problem is something more directly related to JavaClient.

HTH,


sacha


-- Sacha Michel Mallais - 800 lb. gorilla Global Village Consulting Inc.: http://www.global-village.net/ ObAd: read "Practical WebObjects" <fnord> http://www.global-village.net/products/practical_webobjects


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
village.net


This email sent to email@hidden

--
Practical WebObjects - a book for intermediate WebObjects developers who want to increase their overall knowledge of WebObjects, or those who are trying to solve specific application development problems.
http://www.global-village.net/products/practical_webobjects




_______________________________________________
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


  • Follow-Ups:
    • Re: recovering from a validation exception
      • From: Nick Pilch <email@hidden>
References: 
 >recovering from a validation exception (From: Alexandre Mainville <email@hidden>)
 >Re: recovering from a validation exception (From: Sacha Mallais <email@hidden>)
 >Re: recovering from a validation exception (From: Alexandre Mainville <email@hidden>)
 >Re: recovering from a validation exception (From: Sacha Mallais <email@hidden>)
 >Re: recovering from a validation exception (From: Alexandre Mainville <email@hidden>)

  • Prev by Date: Re(2): Java Update for Mac OS X 10.3.9
  • Next by Date: Re: WOHyperlink secure binding and insecure domain
  • Previous by thread: Re: recovering from a validation exception
  • Next by thread: Re: recovering from a validation exception
  • Index(es):
    • Date
    • Thread