Changes for page Building Concurrent Applications with WebObjects and Scala
Last modified by Ravi Mendis on 2012/02/11 08:28
From version 133.1
edited by Ravi Mendis
on 2010/03/04 00:11
on 2010/03/04 00:11
Change comment:
There is no comment for this version
To version 132.1
edited by Ravi Mendis
on 2010/03/04 00:23
on 2010/03/04 00:23
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,9 +1,13 @@ 1 -Given that todays processors ship with dual or quad cores and server processors ship with between 8 to 32 cores, languages like Java, Ruby, Groovy and Python are struggling to keep up. 1 +Given that todays processors ship with dual or quad cores and server processors ship with between 8 to 32 cores, languages like Java, Ruby, Groovy and Python are struggling to keep up. Scala, as its name suggests is built from the ground-up for concurrent programming - a methodology that can take advantage of these modern multi-core processors. 2 2 3 -Scala, as its name suggests is built from the ground-up for concurrent programming - a methodology that can take advantage of these modern multi-core processors. 4 - 5 5 If you use Scala for a concurrent programming, the chances are that you're using Scala Actor to do that. 6 6 5 +{{info}} 6 + 7 +Concurrent programming in Scala is based on *Actors* and mailboxes - a common metaphor that is alternatively known as *Message Queues*. 8 + 9 +{{/info}} 10 + 7 7 == Using Scala Actors with EOF == 8 8 9 9 EOF being notoriously single-threaded, is incredibly unsuitable for use by Scala Actors. ... ... @@ -12,3 +12,18 @@ 12 12 === Using EOAccess to execute SQL === 13 13 14 14 Use Wonder API: [[ERXEOAccessUtilities.evaluateSQLWithEntityNamed()>>http://webobjects.mdimension.com/hudson/job/Wonder53/javadoc/er/extensions/eof/ERXEOAccessUtilities.html#evaluateSQLWithEntity(com.webobjects.eocontrol.EOEditingContext,%20com.webobjects.eoaccess.EOEntity,%20java.lang.String)]] 19 + 20 +==== Caveats ==== 21 + 22 +If you're updating the state of EOs directly using SQL from Scala Actors, you will subsequently need to refresh/refetch these EOs from the WebObjects application. 23 + 24 +== Alternatives == 25 + 26 +You may also manipulate the database from outside of the EOF stack. 27 + 28 +=== Squeryl === 29 + 30 +[[Squeryl>>http://max-l.github.com/Squeryl/index.html]] is a Scala [[Domain-specific language>>http://en.wikipedia.org/wiki/Domain-specific_language]] for SQL. 31 +You may update EOs from Scala Actors using Squeryl instead of using EOF. The advantage here is that you may access the database concurrently avoiding the single-threaded EOF bottleneck in your concurrent application. 32 + 33 +However the same caveat applies - you will need to refresh EOs in the EOF stack for the WebObjects application to reflect the changes made by Squeryl.