diff --git a/akka-core/src/main/scala/remote/RemoteServer.scala b/akka-core/src/main/scala/remote/RemoteServer.scala
index 1145689683..691f28b0ee 100755
--- a/akka-core/src/main/scala/remote/RemoteServer.scala
+++ b/akka-core/src/main/scala/remote/RemoteServer.scala
@@ -118,12 +118,14 @@ class RemoteServer extends Logging {
bootstrap.setOption("child.connectTimeoutMillis", RemoteServer.CONNECTION_TIMEOUT_MILLIS)
openChannels.add(bootstrap.bind(new InetSocketAddress(hostname, port)))
isRunning = true
+ Cluster.registerLocalNode(hostname,port)
}
}
def shutdown = {
openChannels.close.awaitUninterruptibly()
bootstrap.releaseExternalResources
+ Cluster.deregisterLocalNode(hostname,port)
}
}
diff --git a/akka-kernel/src/main/scala/AkkaServlet.scala b/akka-kernel/src/main/scala/AkkaServlet.scala
index 5ca2d701ee..8c9fdba4c2 100755
--- a/akka-kernel/src/main/scala/AkkaServlet.scala
+++ b/akka-kernel/src/main/scala/AkkaServlet.scala
@@ -12,10 +12,13 @@ import com.sun.jersey.api.core.ResourceConfig
import com.sun.jersey.spi.container.servlet.ServletContainer
import com.sun.jersey.spi.container.WebApplication
+import java.util.{List => JList}
+
import javax.servlet.{ServletConfig}
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
-import org.atmosphere.cpr.{AtmosphereServlet, AtmosphereServletProcessor, AtmosphereResource, AtmosphereResourceEvent,CometSupport}
+import org.atmosphere.cpr.{AtmosphereServlet, AtmosphereServletProcessor, AtmosphereResource, AtmosphereResourceEvent,CometSupport,CometSupportResolver,DefaultCometSupportResolver}
+import org.atmosphere.container.{GrizzlyCometSupport}
import org.atmosphere.handler.{ReflectorServletProcessor, AbstractReflectorAtmosphereHandler}
import org.atmosphere.jersey.JerseyBroadcaster
@@ -74,22 +77,28 @@ class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging
override def loadConfiguration(sc: ServletConfig) {
config = new AtmosphereConfig { supportSession = false }
atmosphereHandlers.put("/*", new AtmosphereServlet.AtmosphereHandlerWrapper(servlet, new JerseyBroadcaster))
-
- loadCometSupport(sc.getInitParameter("cometSupport")) map( setCometSupport(_) )
}
- private def loadCometSupport(fqn : String) = {
+ override def createCometSupportResolver() : CometSupportResolver = {
+ import org.scala_tools.javautils.Imports._
- log.info("Trying to load: " + fqn)
- try {
- Some(Class.forName(fqn)
- .getConstructor(Array(classOf[AtmosphereConfig]): _*)
- .newInstance(config)
- .asInstanceOf[CometSupport[_ <: AtmosphereResource[_,_]]])
- } catch {
- case e : Exception =>
- log.error(e, "Couldn't load comet support", fqn)
- None
+ new DefaultCometSupportResolver(config) {
+ type CS = CometSupport[_ <: AtmosphereResource[_,_]]
+ override def resolveMultipleNativeSupportConflict(available : JList[Class[_ <: CS]]) : CS = {
+ available.asScala.filter(_ != classOf[GrizzlyCometSupport]).toList match {
+ case Nil => new GrizzlyCometSupport(config)
+ case x :: Nil => newCometSupport(x.asInstanceOf[Class[_ <: CS]])
+ case _ => super.resolveMultipleNativeSupportConflict(available)
+ }
+ }
+
+ override def resolve(useNativeIfPossible : Boolean, useBlockingAsDefault : Boolean) : CS = {
+ val predef = config.getInitParameter("cometSupport")
+ if(testClassExists(predef))
+ newCometSupport(predef)
+ else
+ super.resolve(useNativeIfPossible, useBlockingAsDefault)
+ }
}
}
}
diff --git a/akka-rest/src/main/scala/ActorComponentProvider.scala b/akka-rest/src/main/scala/ActorComponentProvider.scala
index 4985bc48de..6e924b16da 100755
--- a/akka-rest/src/main/scala/ActorComponentProvider.scala
+++ b/akka-rest/src/main/scala/ActorComponentProvider.scala
@@ -4,6 +4,7 @@
package se.scalablesolutions.akka.rest
+import com.sun.jersey.core.spi.component.ComponentScope
import com.sun.jersey.core.spi.component.ioc.IoCFullyManagedComponentProvider
import config.Configurator
@@ -11,6 +12,8 @@ import util.Logging
class ActorComponentProvider(val clazz: Class[_], val configurators: List[Configurator])
extends IoCFullyManagedComponentProvider with Logging {
+
+ override def getScope = ComponentScope.Singleton
override def getInstance: AnyRef = {
val instances = for {
diff --git a/akka-rest/src/main/scala/NodeWriter.scala b/akka-rest/src/main/scala/NodeWriter.scala
deleted file mode 100755
index 58c127b411..0000000000
--- a/akka-rest/src/main/scala/NodeWriter.scala
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Copyright (C) 2009 Scalable Solutions.
- */
-
-package se.scalablesolutions.akka.rest
-
-import java.io.OutputStream
-import java.lang.annotation.Annotation
-import java.lang.{String, Class}
-
-import javax.ws.rs.core.{MultivaluedMap, MediaType}
-import javax.ws.rs.ext.{MessageBodyWriter, Provider}
-import java.lang.reflect.Type
-
-import scala.xml.NodeSeq
-
-@Provider
-class NodeWriter extends MessageBodyWriter[NodeSeq] {
-
- def isWriteable(aClass: Class[_], aType: Type, annotations: Array[Annotation], mediaType: MediaType) = {
- classOf[NodeSeq].isAssignableFrom(aClass)
- }
-
- def getSize(nodes: NodeSeq, aClass: Class[_], aType: Type, annotations: Array[Annotation], mediaType: MediaType) = -1L
-
- def writeTo(nodes: NodeSeq,
- aClass: Class[_],
- aType: Type,
- annotations: Array[Annotation],
- mediaType: MediaType,
- stringObjectMultivaluedMap: MultivaluedMap[String, Object],
- outputStream: OutputStream) : Unit = {
- var answer = nodes.toString();
- outputStream.write(answer.getBytes());
- }
-}
\ No newline at end of file
diff --git a/akka-samples-scala/src/main/scala/SimpleService.scala b/akka-samples-scala/src/main/scala/SimpleService.scala
index 2ccd8f13a4..11e8304551 100644
--- a/akka-samples-scala/src/main/scala/SimpleService.scala
+++ b/akka-samples-scala/src/main/scala/SimpleService.scala
@@ -22,7 +22,7 @@ import org.atmosphere.jersey.Broadcastable
class Boot {
val factory = SupervisorFactory(
SupervisorConfig(
- RestartStrategy(OneForOne, 3, 100, List(classOf[Exception])),
+ RestartStrategy(OneForOne, 3, 100,List(classOf[Exception])),
Supervise(
new SimpleService,
LifeCycle(Permanent)) ::
@@ -90,7 +90,6 @@ class PubSub extends Actor {
def receive = { case _ => }
}
-
/**
* Try service out by invoking (multiple times):
*
diff --git a/config/akka-reference.conf b/config/akka-reference.conf
index 3fa382f252..5a04981390 100644
--- a/config/akka-reference.conf
+++ b/config/akka-reference.conf
@@ -36,7 +36,12 @@
compression-scheme = "zlib" # Options: "zlib" (lzf to come), leave out for no compression
zlib-compression-level = 6 # Options: 0-9 (1 being fastest and 9 being the most compressed), default is 6
-
+
+ name = "default"
+ actor = "se.scalablesolutions.akka.remote.JGroupsClusterActor"
+
+
+
service = on
hostname = "localhost"
port = 9999
@@ -53,7 +58,7 @@
service = on
hostname = "localhost"
port = 9998
- filters = "[se.scalablesolutions.akka.security.AkkaSecurityFilterFactory]" # List with all servlet filters to use
+ filters = "[se.scalablesolutions.akka.security.AkkaSecurityFilterFactory]" # List with all jersey filters to use
authenticator = "se.scalablesolutions.akka.security.samples.BasicAuthenticationService" # The authentication service to use
diff --git a/pom.xml b/pom.xml
index 0664840d16..4ab3b9ac74 100755
--- a/pom.xml
+++ b/pom.xml
@@ -42,8 +42,8 @@
${maven.compiler.source}
${project.build.sourceEncoding}
${project.build.sourceEncoding}
- 0.4.1
- 1.1.4
+ 0.5-SNAPSHOT
+ 1.1.5-ea-SNAPSHOT
1.9.18-i
@@ -89,6 +89,16 @@
Despot
+
+ viktorklang
+ Viktor Klang
+ +1
+ viktor.klang [REMOVE] AT gmail DOT com
+
+ Sourceror
+ Ninja-Zombie
+
+