diff --git a/akka-kernel/pom.xml b/akka-kernel/pom.xml index b86d89e09e..4886d11a6a 100755 --- a/akka-kernel/pom.xml +++ b/akka-kernel/pom.xml @@ -229,21 +229,16 @@ jersey-scala 1.1.3-ea + + org.atmosphere + atmosphere-runtime + 0.4.1 + org.atmosphere atmosphere-core 0.4-SNAPSHOT - - org.atmosphere - atmosphere-portable-runtime - 0.4-SNAPSHOT - - - org.atmosphere - atmosphere-compat - 0.4-SNAPSHOT - diff --git a/akka-kernel/src/main/scala/AkkaServlet.scala b/akka-kernel/src/main/scala/AkkaServlet.scala index bbfecbaf7c..0538e8a625 100755 --- a/akka-kernel/src/main/scala/AkkaServlet.scala +++ b/akka-kernel/src/main/scala/AkkaServlet.scala @@ -15,7 +15,7 @@ import com.sun.jersey.spi.container.WebApplication import javax.servlet.{ServletConfig} import javax.servlet.http.{HttpServletRequest, HttpServletResponse} -import org.atmosphere.cpr.{AtmosphereServlet, AtmosphereServletProcessor, AtmosphereResource, AtmosphereResourceEvent} +import org.atmosphere.cpr.{AtmosphereServlet, AtmosphereServletProcessor, AtmosphereResource, AtmosphereResourceEvent,CometSupport} import org.atmosphere.handler.{ReflectorServletProcessor, AbstractReflectorAtmosphereHandler} import org.atmosphere.core.JerseyBroadcaster @@ -25,7 +25,7 @@ import org.atmosphere.core.JerseyBroadcaster * * @author Jonas Bonér */ -class AkkaServlet extends ServletContainer with Logging { +class AkkaServlet extends ServletContainer { import org.scala_tools.javautils.Imports._ override def initiate(resourceConfig: ResourceConfig, webApplication: WebApplication) = { @@ -48,7 +48,7 @@ class AkkaServlet extends ServletContainer with Logging { *

* Used by the Akka Kernel to bootstrap REST and Comet. */ -class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet { +class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging { val servlet = new AkkaServlet with AtmosphereServletProcessor { //Delegate to implement the behavior for AtmosphereHandler @@ -73,5 +73,17 @@ class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet { override def loadConfiguration(sc: ServletConfig) { atmosphereHandlers.put("/*", new AtmosphereServlet.AtmosphereHandlerWrapper(servlet, new JerseyBroadcaster)) + + loadCometSupport(sc.getInitParameter("cometSupport")) map( setCometSupport(_) ) + } + + private def loadCometSupport(fqn : String) = { + fqn match { + case s : String if s.length > 0 => Some(Class.forName(fqn) + .getConstructor(Array(classOf[AtmosphereConfig])) + .newInstance(config) + .asInstanceOf[CometSupport[_ <: AtmosphereResource[_,_]]]) + case _ => None + } } } diff --git a/akka-kernel/src/main/scala/Kernel.scala b/akka-kernel/src/main/scala/Kernel.scala index e5d85fb4df..69813fdd18 100644 --- a/akka-kernel/src/main/scala/Kernel.scala +++ b/akka-kernel/src/main/scala/Kernel.scala @@ -69,6 +69,8 @@ object Kernel extends Logging { adapter.setHandleStaticResources(true) adapter.setServletInstance(new AkkaCometServlet) adapter.setContextPath(uri.getPath) + //Using autodetection for now + //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-rest/pom.xml b/akka-rest/pom.xml index d72a32ef33..069b9c6d1a 100644 --- a/akka-rest/pom.xml +++ b/akka-rest/pom.xml @@ -59,20 +59,5 @@ jersey-scala 1.1.3-ea - - org.atmosphere - atmosphere-core - 0.4-SNAPSHOT - - - org.atmosphere - atmosphere-portable-runtime - 0.4-SNAPSHOT - - - org.atmosphere - atmosphere-compat - 0.4-SNAPSHOT -