diff --git a/akka-kernel/pom.xml b/akka-kernel/pom.xml
index b964967624..9ed31850e0 100755
--- a/akka-kernel/pom.xml
+++ b/akka-kernel/pom.xml
@@ -232,12 +232,17 @@
org.atmosphere
atmosphere-runtime
- 0.4.1
+ 0.5-SNAPSHOT
org.atmosphere
- atmosphere-core
- 0.4-SNAPSHOT
+ atmosphere-jersey
+ 0.5-SNAPSHOT
+
+
+ org.atmosphere
+ atmosphere-annotations
+ 0.5-SNAPSHOT
diff --git a/akka-kernel/src/main/scala/AkkaServlet.scala b/akka-kernel/src/main/scala/AkkaServlet.scala
index f633835deb..3f18fc9dad 100755
--- a/akka-kernel/src/main/scala/AkkaServlet.scala
+++ b/akka-kernel/src/main/scala/AkkaServlet.scala
@@ -12,12 +12,15 @@ 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}
+import org.atmosphere.container.{GrizzlyCometSupport,GlassFishv3CometSupport}
import org.atmosphere.handler.{ReflectorServletProcessor, AbstractReflectorAtmosphereHandler}
-import org.atmosphere.core.JerseyBroadcaster
+import org.atmosphere.jersey.JerseyBroadcaster
/**
* Akka's servlet to be used when deploying actors exposed as REST services in a standard servlet container,
@@ -73,22 +76,28 @@ class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging
override def loadConfiguration(sc: ServletConfig) {
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 CometSupportResolver(config) {
+ type CS = CometSupport[_ <: AtmosphereResource[_,_]]
+ override def resolveMultipleNativeSupportConflict(available : JList[Class[_ <: CS]]) : CS = {
+ available.asScala.filter(c => c != classOf[GrizzlyCometSupport] && c != classOf[GlassFishv3CometSupport]).toList match {
+ case Nil => new GrizzlyCometSupport(config)
+ case x :: Nil => newCometSupport(x)
+ 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-kernel/src/main/scala/Kernel.scala b/akka-kernel/src/main/scala/Kernel.scala
index e4f66a9050..69813fdd18 100644
--- a/akka-kernel/src/main/scala/Kernel.scala
+++ b/akka-kernel/src/main/scala/Kernel.scala
@@ -70,7 +70,7 @@ object Kernel extends Logging {
adapter.setServletInstance(new AkkaCometServlet)
adapter.setContextPath(uri.getPath)
//Using autodetection for now
- adapter.addInitParameter("cometSupport", "org.atmosphere.container.GrizzlyCometSupport")
+ //adapter.addInitParameter("cometSupport", "org.atmosphere.container.GrizzlyCometSupport")
if (HOME.isDefined) adapter.setRootFolder(HOME.get + "/deploy/root")
log.info("REST service root path: [" + adapter.getRootFolder + "] and context path [" + adapter.getContextPath + "] ")
diff --git a/akka-samples-scala/src/main/scala/SimpleService.scala b/akka-samples-scala/src/main/scala/SimpleService.scala
index 6cb6ed0b8f..bbed4f9d75 100644
--- a/akka-samples-scala/src/main/scala/SimpleService.scala
+++ b/akka-samples-scala/src/main/scala/SimpleService.scala
@@ -13,7 +13,7 @@ import java.lang.Integer
import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.{GET, POST, Path, Produces, WebApplicationException, Consumes}
-import org.atmosphere.core.annotation.{Broadcast, Suspend}
+import org.atmosphere.annotation.{Broadcast, Suspend}
import org.atmosphere.util.XSSHtmlFilter
import org.atmosphere.cpr.BroadcastFilter
diff --git a/pom.xml b/pom.xml
index 7361426e9a..c6f161a0e4 100755
--- a/pom.xml
+++ b/pom.xml
@@ -67,16 +67,16 @@
-
- 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