diff --git a/akka-actors/pom.xml b/akka-actors/pom.xml index 30362fefff..b3dd417381 100644 --- a/akka-actors/pom.xml +++ b/akka-actors/pom.xml @@ -19,18 +19,18 @@ akka-util-java - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} org.scala-lang scala-library - 2.7.5 + ${scala.version} org.codehaus.aspectwerkz diff --git a/akka-actors/src/main/scala/nio/RemoteClient.scala b/akka-actors/src/main/scala/nio/RemoteClient.scala index 658e400a65..3743699b3f 100644 --- a/akka-actors/src/main/scala/nio/RemoteClient.scala +++ b/akka-actors/src/main/scala/nio/RemoteClient.scala @@ -6,24 +6,24 @@ package se.scalablesolutions.akka.nio import scala.collection.mutable.HashMap -import protobuf.RemoteProtocol.{RemoteRequest, RemoteReply} +import se.scalablesolutions.akka.nio.protobuf.RemoteProtocol.{RemoteRequest, RemoteReply} import se.scalablesolutions.akka.actor.{Exit, Actor} import se.scalablesolutions.akka.dispatch.{DefaultCompletableFutureResult, CompletableFutureResult} import se.scalablesolutions.akka.util.Logging import se.scalablesolutions.akka.Config.config -import org.jboss.netty.bootstrap.ClientBootstrap import org.jboss.netty.channel._ import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory +import org.jboss.netty.bootstrap.ClientBootstrap import org.jboss.netty.handler.codec.frame.{LengthFieldBasedFrameDecoder, LengthFieldPrepender} +import org.jboss.netty.handler.codec.compression.{ZlibDecoder, ZlibEncoder} import org.jboss.netty.handler.codec.protobuf.{ProtobufDecoder, ProtobufEncoder} import org.jboss.netty.handler.timeout.ReadTimeoutHandler import org.jboss.netty.util.{TimerTask, Timeout, HashedWheelTimer} import java.net.InetSocketAddress import java.util.concurrent.{TimeUnit, Executors, ConcurrentMap, ConcurrentHashMap} -import org.jboss.netty.handler.codec.compression.{ZlibDecoder, ZlibEncoder} - + /** * @author Jonas Bonér */ diff --git a/akka-actors/src/main/scala/nio/RemoteServer.scala b/akka-actors/src/main/scala/nio/RemoteServer.scala index fd770bc6f5..2ffe0e1f1a 100755 --- a/akka-actors/src/main/scala/nio/RemoteServer.scala +++ b/akka-actors/src/main/scala/nio/RemoteServer.scala @@ -21,11 +21,34 @@ import org.jboss.netty.handler.codec.protobuf.{ProtobufDecoder, ProtobufEncoder} import org.jboss.netty.handler.codec.compression.{ZlibEncoder, ZlibDecoder} /** + * Use this object if you need a single remote server on a specific node. + * + *
+ * RemoteServerNode.start
+ * 
+ * + * If you need to create more than one, then you can use the RemoteServer: + * + *
+ * val server = new RemoteServer
+ * server.start
+ * 
+ * * @author Jonas Bonér */ -object RemoteServer extends Logging { +object RemoteServerNode extends RemoteServer + +/** + * This object holds configuration variables. + * + * @author Jonas Bonér + */ +object RemoteServer { val HOSTNAME = config.getString("akka.remote.server.hostname", "localhost") val PORT = config.getInt("akka.remote.server.port", 9999) + + val CONNECTION_TIMEOUT_MILLIS = config.getInt("akka.remote.server.connection-timeout", 1000) + val COMPRESSION_SCHEME = config.getString("akka.remote.compression-scheme", "zlib") val ZLIB_COMPRESSION_LEVEL = { val level = config.getInt("akka.remote.zlib-compression-level", 6) @@ -33,11 +56,29 @@ object RemoteServer extends Logging { "zlib compression level has to be within 1-9, with 1 being fastest and 9 being the most compressed") level } +} - val CONNECTION_TIMEOUT_MILLIS = config.getInt("akka.remote.server.connection-timeout", 1000) +/** + * Use this class if you need a more than one remote server on a specific node. + * + *
+ * val server = new RemoteServer
+ * server.start
+ * 
+ * + * If you need to create more than one, then you can use the RemoteServer: + * + *
+ * RemoteServerNode.start
+ * 
+ * + * @author Jonas Bonér + */ +class RemoteServer extends Logging { + val name = "RemoteServer@" + hostname + ":" + port - private var hostname = HOSTNAME - private var port = PORT + private var hostname = RemoteServer.HOSTNAME + private var port = RemoteServer.PORT @volatile private var isRunning = false @volatile private var isConfigured = false @@ -48,13 +89,11 @@ object RemoteServer extends Logging { private val bootstrap = new ServerBootstrap(factory) - def name = "RemoteServer@" + hostname + ":" + port - def start: Unit = start(None) - def start(loader: Option[ClassLoader]): Unit = start(HOSTNAME, PORT, loader) + def start(loader: Option[ClassLoader]): Unit = start(hostname, port, loader) - def start(hostname: String, port: Int): Unit = start(hostname, port, None) + def start(_hostname: String, _port: Int): Unit = start(_hostname, _port, None) def start(_hostname: String, _port: Int, loader: Option[ClassLoader]): Unit = synchronized { if (!isRunning) { @@ -62,15 +101,20 @@ object RemoteServer extends Logging { port = _port log.info("Starting remote server at [%s:%s]", hostname, port) bootstrap.setPipelineFactory(new RemoteServerPipelineFactory(name, loader)) + // FIXME make these RemoteServer options configurable bootstrap.setOption("child.tcpNoDelay", true) bootstrap.setOption("child.keepAlive", true) bootstrap.setOption("child.reuseAddress", true) - bootstrap.setOption("child.connectTimeoutMillis", CONNECTION_TIMEOUT_MILLIS) + bootstrap.setOption("child.connectTimeoutMillis", RemoteServer.CONNECTION_TIMEOUT_MILLIS) bootstrap.bind(new InetSocketAddress(hostname, port)) isRunning = true } } + + def shutdown = { + bootstrap.releaseExternalResources + } } /** @@ -78,6 +122,8 @@ object RemoteServer extends Logging { */ class RemoteServerPipelineFactory(name: String, loader: Option[ClassLoader]) extends ChannelPipelineFactory { + import RemoteServer._ + def getPipeline: ChannelPipeline = { val pipeline = Channels.pipeline() RemoteServer.COMPRESSION_SCHEME match { diff --git a/akka-actors/src/test/scala/RemoteActorTest.scala b/akka-actors/src/test/scala/RemoteActorTest.scala index 884a0d007f..f0ab401eac 100644 --- a/akka-actors/src/test/scala/RemoteActorTest.scala +++ b/akka-actors/src/test/scala/RemoteActorTest.scala @@ -3,9 +3,9 @@ package se.scalablesolutions.akka.actor import java.util.concurrent.TimeUnit import junit.framework.TestCase -import se.scalablesolutions.akka.nio.{RemoteServer, RemoteClient} import org.scalatest.junit.JUnitSuite import org.junit.Test +import se.scalablesolutions.akka.nio.{RemoteServerNode, RemoteServer, RemoteClient} object Global { var oneWay = "nada" @@ -32,7 +32,7 @@ class RemoteActorTest extends JUnitSuite { akka.Config.config new Thread(new Runnable() { def run = { - RemoteServer.start + RemoteServerNode.start } }).start Thread.sleep(1000) diff --git a/akka-actors/src/test/scala/RemoteSupervisorTest.scala b/akka-actors/src/test/scala/RemoteSupervisorTest.scala index ac6f1777ab..42a8837db3 100644 --- a/akka-actors/src/test/scala/RemoteSupervisorTest.scala +++ b/akka-actors/src/test/scala/RemoteSupervisorTest.scala @@ -5,11 +5,11 @@ package se.scalablesolutions.akka.actor import se.scalablesolutions.akka.serialization.BinaryString -import se.scalablesolutions.akka.nio.{RemoteClient, RemoteServer} import se.scalablesolutions.akka.config.ScalaConfig._ import org.scalatest.junit.JUnitSuite import org.junit.Test +import se.scalablesolutions.akka.nio.{RemoteServerNode, RemoteClient, RemoteServer} object Log { var messageLog: String = "" @@ -25,7 +25,7 @@ class RemoteSupervisorTest extends JUnitSuite { akka.Config.config new Thread(new Runnable() { def run = { - RemoteServer.start + RemoteServerNode.start } }).start Thread.sleep(1000) diff --git a/akka-amqp/pom.xml b/akka-amqp/pom.xml index 5199ed0dc3..323f90a0e4 100644 --- a/akka-amqp/pom.xml +++ b/akka-amqp/pom.xml @@ -17,13 +17,13 @@ akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} com.rabbitmq diff --git a/akka-camel/pom.xml b/akka-camel/pom.xml index 797b8fef53..a862e8f64f 100644 --- a/akka-camel/pom.xml +++ b/akka-camel/pom.xml @@ -19,13 +19,13 @@ akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} org.apache.camel diff --git a/akka-fun-test-java/pom.xml b/akka-fun-test-java/pom.xml index 0cba842396..3a0fc927eb 100644 --- a/akka-fun-test-java/pom.xml +++ b/akka-fun-test-java/pom.xml @@ -17,8 +17,8 @@ akka-kernel - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} com.sun.grizzly diff --git a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/RemoteInMemoryStateTest.java b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/RemoteInMemoryStateTest.java index 62050ea03e..3703efb43a 100644 --- a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/RemoteInMemoryStateTest.java +++ b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/RemoteInMemoryStateTest.java @@ -7,7 +7,8 @@ package se.scalablesolutions.akka.api; import se.scalablesolutions.akka.Config; import se.scalablesolutions.akka.actor.ActiveObject; import se.scalablesolutions.akka.config.ActiveObjectConfigurator; -import se.scalablesolutions.akka.nio.RemoteServer; +import se.scalablesolutions.akka.nio.RemoteServerNode; + import junit.framework.TestCase; public class RemoteInMemoryStateTest extends TestCase { @@ -16,7 +17,7 @@ public class RemoteInMemoryStateTest extends TestCase { static { new Thread(new Runnable() { public void run() { - RemoteServer.start(); + RemoteServerNode.start(); } }).start(); try { Thread.currentThread().sleep(1000); } catch (Exception e) {} diff --git a/akka-kernel/pom.xml b/akka-kernel/pom.xml index 6e430c08c6..93fce3f319 100755 --- a/akka-kernel/pom.xml +++ b/akka-kernel/pom.xml @@ -19,40 +19,40 @@ akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-persistence - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-rest - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-amqp - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-camel - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-security - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} org.scala-lang scala-library - 2.7.5 + ${scala.version} org.codehaus.aspectwerkz @@ -277,8 +277,8 @@ install - + diff --git a/akka-kernel/src/main/scala/Kernel.scala b/akka-kernel/src/main/scala/Kernel.scala index 7e988d1ede..295a1d3b38 100644 --- a/akka-kernel/src/main/scala/Kernel.scala +++ b/akka-kernel/src/main/scala/Kernel.scala @@ -12,7 +12,7 @@ import javax.ws.rs.core.UriBuilder import java.io.File import java.net.URLClassLoader -import se.scalablesolutions.akka.nio.RemoteServer +import se.scalablesolutions.akka.nio.RemoteServerNode import se.scalablesolutions.akka.util.Logging /** @@ -54,7 +54,7 @@ object Kernel extends Logging { def startRemoteService = { // FIXME manage remote serve thread for graceful shutdown val remoteServerThread = new Thread(new Runnable() { - def run = RemoteServer.start(applicationLoader) + def run = RemoteServerNode.start(applicationLoader) }, "Akka Remote Service") remoteServerThread.start } diff --git a/akka-persistence/pom.xml b/akka-persistence/pom.xml index 7c3c992079..91a0079611 100644 --- a/akka-persistence/pom.xml +++ b/akka-persistence/pom.xml @@ -17,13 +17,13 @@ akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} @@ -49,6 +49,20 @@ commons-pool 1.5.1 + + + + org.scalatest + scalatest + 1.0 + test + + + junit + junit + 4.5 + test + diff --git a/akka-rest/pom.xml b/akka-rest/pom.xml index 069b9c6d1a..ab010b9fa9 100644 --- a/akka-rest/pom.xml +++ b/akka-rest/pom.xml @@ -19,13 +19,13 @@ akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} diff --git a/akka-samples-java/pom.xml b/akka-samples-java/pom.xml index 2a7cf2adff..9eb36bc01d 100644 --- a/akka-samples-java/pom.xml +++ b/akka-samples-java/pom.xml @@ -17,33 +17,33 @@ akka-util-java - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-persistence - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-rest - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-kernel - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} javax.ws.rs @@ -73,8 +73,8 @@ install - + diff --git a/akka-samples-lift/pom.xml b/akka-samples-lift/pom.xml index 20af39b13c..b198f5403a 100644 --- a/akka-samples-lift/pom.xml +++ b/akka-samples-lift/pom.xml @@ -21,33 +21,33 @@ akka-util-java - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-persistence - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-rest - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-kernel - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} javax.ws.rs diff --git a/akka-samples-scala/pom.xml b/akka-samples-scala/pom.xml index 59e9948e3d..9739f3a07b 100644 --- a/akka-samples-scala/pom.xml +++ b/akka-samples-scala/pom.xml @@ -17,33 +17,33 @@ akka-util-java - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-persistence - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-rest - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-kernel - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} javax.ws.rs @@ -62,8 +62,8 @@ install - + diff --git a/akka-samples-security/pom.xml b/akka-samples-security/pom.xml index d870bdac17..e604febf53 100644 --- a/akka-samples-security/pom.xml +++ b/akka-samples-security/pom.xml @@ -17,33 +17,33 @@ akka-kernel - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-util-java - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-security - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-persistence - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} javax.ws.rs @@ -68,8 +68,8 @@ install - + diff --git a/akka-security/pom.xml b/akka-security/pom.xml index 6e90607d1a..8758508fdd 100644 --- a/akka-security/pom.xml +++ b/akka-security/pom.xml @@ -18,32 +18,32 @@ org.scala-lang scala-library - 2.7.5 + ${scala.version} akka-actors - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-persistence - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} akka-util - se.scalablesolutions.akka - 0.6 + ${project.groupId} + ${project.version} - javax.annotation - jsr250-api - 1.0 + javax.annotation + jsr250-api + 1.0 com.sun.jersey @@ -56,11 +56,11 @@ 1.0 - net.liftweb - lift-util - 1.1-M6 + net.liftweb + lift-util + 1.1-M6 - + org.scalatest @@ -80,8 +80,8 @@ 1.8.0 test - - + + diff --git a/akka-util/pom.xml b/akka-util/pom.xml index b8645bd74d..5a7997a3af 100644 --- a/akka-util/pom.xml +++ b/akka-util/pom.xml @@ -18,12 +18,12 @@ org.scala-lang scala-library - 2.7.5 + ${scala.version} net.lag configgy - 1.3 + 1.4 diff --git a/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServer$object.html b/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServer$object.html index 94a5b01949..ca03ada2f5 100644 --- a/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServer$object.html +++ b/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServer$object.html @@ -60,7 +60,7 @@

- Source: RemoteServer.scala(25) + Source: RemoteServerNode.scala(25) diff --git a/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServerHandler.html b/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServerHandler.html index 4c1fee9478..70071c45c7 100644 --- a/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServerHandler.html +++ b/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServerHandler.html @@ -60,7 +60,7 @@

- Source: RemoteServer.scala(86) + Source: RemoteServerNode.scala(86) diff --git a/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServerPipelineFactory.html b/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServerPipelineFactory.html index 2709a9bb02..53f1eb9b9d 100644 --- a/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServerPipelineFactory.html +++ b/docs/scaladocs-akka-actors/se/scalablesolutions/akka/nio/RemoteServerPipelineFactory.html @@ -60,7 +60,7 @@

- Source: RemoteServer.scala(70) + Source: RemoteServerNode.scala(70) diff --git a/pom.xml b/pom.xml index 7361426e9a..7ffd4cd08a 100755 --- a/pom.xml +++ b/pom.xml @@ -9,12 +9,25 @@ se.scalablesolutions.akka 0.6 2009 + http://akkasource.org pom + + Akka implements a unique hybrid of the Actor model and Software Transactional Memory (STM). + Akka gives you you: + * Concurrency (high-level and simple). + * Asynchronous, non-blocking, event-driven and highly performant components. + * Scalability through very performant remote actors. + * Fault-tolerance through supervision hierarchies with “let-it-crash” semantics. + + - 0.6 - se.scalablesolutions.akka - 2.7.5 + 2.7.7 + UTF-8 + 1.5 + ${maven.compiler.source} + ${project.build.sourceEncoding} + ${project.build.sourceEncoding} @@ -39,12 +52,6 @@ http://scalablesolutions.se - - scm:git:git://github.com/jboner/akka.git - scm:git:git@github.com:jboner/akka.git - http://github.com/jboner/akka - - The Apache License, ASL Version 2.0 @@ -66,17 +73,47 @@ + + scm:git:git://github.com/jboner/akka.git + scm:git:git@github.com:jboner/akka.git + http://github.com/jboner/akka + + + + assembla + http://assembla.com/spaces/akka/ + + + + hudson + http://hudson.scala-tools.org/job/akka/ + + + + + + + + + User and Developer Discussion List + http://groups.google.com/group/akka-user + akka-user@googlegroups.com + akka-user+subscribe@googlegroups.com + akka-user+unsubscribe@googlegroups.com + + + - - repo1.maven - Maven Main Repository - http://repo1.maven.org/maven2 - project.embedded.module Project Embedded Repository file://${basedir}/../embedded-repo + + repo1.maven + Maven Main Repository + http://repo1.maven.org/maven2 + scala-tools-snapshots Scala-Tools Maven2 Snapshot Repository @@ -262,7 +299,7 @@ - ${akka.version} + ${project.version} @@ -348,28 +385,58 @@ + org.apache.maven.plugins maven-project-info-reports-plugin + 2.1.2 + + + + cim + dependencies + dependency-convergence + + index + issue-tracking + license + mailing-list + + plugins + project-team + scm + summary + + + org.scala-tools maven-scala-plugin - 2.9.1 + 2.12.2 - - -Xmx1024m - -DpackageLinkDefs=file://${basedir}/../vscaladocs-packageLinkDefs.properties - - - - + ${project.build.sourceEncoding} + 1.2-SNAPSHOT ${scala.version} + + -Xmx1024m + -DpackageLinkDefs=file://${project.build.directory}/packageLinkDefs.properties + + + org.apache.maven.plugins maven-changes-plugin - 2.0-beta-3 + 2.1