Atmosphere5.0
This commit is contained in:
parent
50e73c2a9f
commit
f46e819c1e
5 changed files with 39 additions and 25 deletions
|
|
@ -232,12 +232,17 @@
|
|||
<dependency>
|
||||
<groupId>org.atmosphere</groupId>
|
||||
<artifactId>atmosphere-runtime</artifactId>
|
||||
<version>0.4.1</version>
|
||||
<version>0.5-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.atmosphere</groupId>
|
||||
<artifactId>atmosphere-core</artifactId>
|
||||
<version>0.4-SNAPSHOT</version>
|
||||
<artifactId>atmosphere-jersey</artifactId>
|
||||
<version>0.5-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.atmosphere</groupId>
|
||||
<artifactId>atmosphere-annotations</artifactId>
|
||||
<version>0.5-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 + "] ")
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
10
pom.xml
10
pom.xml
|
|
@ -67,16 +67,16 @@
|
|||
</developers>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>repo1.maven</id>
|
||||
<name>Maven Main Repository</name>
|
||||
<url>http://repo1.maven.org/maven2</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>project.embedded.module</id>
|
||||
<name>Project Embedded Repository</name>
|
||||
<url>file://${basedir}/../embedded-repo</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>repo1.maven</id>
|
||||
<name>Maven Main Repository</name>
|
||||
<url>http://repo1.maven.org/maven2</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>scala-tools-snapshots</id>
|
||||
<name>Scala-Tools Maven2 Snapshot Repository</name>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue