Elaborated on classloader handling

This commit is contained in:
Viktor Klang 2010-05-26 23:00:31 +02:00
parent ef8f11f8a6
commit 96bb8e381e
2 changed files with 12 additions and 18 deletions

View file

@ -15,15 +15,7 @@ import org.atmosphere.container.GrizzlyCometSupport
import org.atmosphere.cpr.{AtmosphereServlet, AtmosphereServletProcessor, AtmosphereResource, AtmosphereResourceEvent,CometSupport,CometSupportResolver,DefaultCometSupportResolver}
import org.atmosphere.handler.{ReflectorServletProcessor, AbstractReflectorAtmosphereHandler}
/**
* Akka's Comet servlet to be used when deploying actors exposed as Comet (and REST) services in a
* standard servlet container, e.g. not using the Akka Kernel.
* <p/>
* Used by the Akka Kernel to bootstrap REST and Comet.
*/
class AkkaServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging {
val servlet = new RestServlet with AtmosphereServletProcessor {
class AtmosphereRestServlet extends RestServlet with AtmosphereServletProcessor {
//Delegate to implement the behavior for AtmosphereHandler
private val handler = new AbstractReflectorAtmosphereHandler {
override def onRequest(event: AtmosphereResource[HttpServletRequest, HttpServletResponse]) {
@ -44,6 +36,16 @@ class AkkaServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging {
}
}
/**
* Akka's Comet servlet to be used when deploying actors exposed as Comet (and REST) services in a
* standard servlet container, e.g. not using the Akka Kernel.
* <p/>
* Used by the Akka Kernel to bootstrap REST and Comet.
*/
class AkkaServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging {
lazy val servlet = createRestServlet
protected def createRestServlet : AtmosphereRestServlet = new AtmosphereRestServlet
/**
* We override this to avoid Atmosphere looking for it's atmosphere.xml file
* Instead we specify what semantics we want in code.

View file

@ -5,7 +5,6 @@
package se.scalablesolutions.akka.rest
import se.scalablesolutions.akka.config.Config.config
import se.scalablesolutions.akka.actor.ActorModules
import com.sun.jersey.api.core.ResourceConfig
import com.sun.jersey.spi.container.servlet.ServletContainer
import com.sun.jersey.spi.container.WebApplication
@ -28,13 +27,6 @@ class AkkaServlet extends ServletContainer {
"com.sun.jersey.spi.container.ResourceFilters",
config.getList("akka.rest.filters").mkString(","))
val cl = Thread.currentThread.getContextClassLoader
Thread.currentThread.setContextClassLoader(ActorModules.loader_?.getOrElse(cl))
try {
webApplication.initiate(resourceConfig)
}
finally{
Thread.currentThread.setContextClassLoader(cl)
}
webApplication.initiate(resourceConfig)
}
}