Experimenting trying to get Lift views to work. (And they don't)
This commit is contained in:
parent
33b030361c
commit
13bc65142e
13 changed files with 41 additions and 9 deletions
|
|
@ -50,11 +50,14 @@ CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-core-1.0.3.jar
|
|||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-json-1.0.3.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-server-1.0.3.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-scala-1.1.2-ea-SNAPSHOT.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-lift-1.1.2-ea-SNAPSHOT.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/JSAP-2.1.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jsr250-api-1.0.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jsr311-api-1.0.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/libfb303.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/libthrift.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/lift-webkit-1.1-M3.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/lift-util-1.1-M3.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/log4j-1.2.15.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/lucene-core-2.2.0.jar
|
||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/netty-3.1.0.CR1.jar
|
||||
|
|
|
|||
|
|
@ -6,5 +6,5 @@
|
|||
<servlet-mapping>
|
||||
<servlet-name>Akka Servlet</servlet-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</servlet-mapping-->
|
||||
</servlet-mapping>
|
||||
</web-app>
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -130,6 +130,11 @@
|
|||
<artifactId>jersey-scala</artifactId>
|
||||
<version>1.1.2-ea-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.jersey.contribs</groupId>
|
||||
<artifactId>jersey-lift</artifactId>
|
||||
<version>1.1.2-ea-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<!-- For third-party logging -->
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -125,9 +125,17 @@ object Kernel extends Logging {
|
|||
val uri = UriBuilder.fromUri(REST_URL).port(REST_PORT).build()
|
||||
val adapter = new ServletAdapter
|
||||
val servlet = new AkkaServlet
|
||||
|
||||
adapter.addInitParameter("bootloader", config.getString("akka.lift.bootloader").getOrElse(null))
|
||||
adapter.addInitParameter("com.sun.jersey.config.feature.Redirect", "true")
|
||||
adapter.addInitParameter("com.sun.jersey.config.feature.ImplicitViewables", "true")
|
||||
adapter.setServletInstance(servlet)
|
||||
adapter.setContextPath(uri.getPath)
|
||||
|
||||
//TODO add initialization of Lift (LiftFilter needs initialization)
|
||||
|
||||
log.debug("REST service context path: [" + uri.getPath + "]")
|
||||
|
||||
val scheme = uri.getScheme
|
||||
if (!scheme.equalsIgnoreCase("http")) throw new IllegalArgumentException("The URI scheme, of the URI " + REST_URL + ", must be equal (ignoring case) to 'http'")
|
||||
|
||||
|
|
@ -136,6 +144,7 @@ object Kernel extends Logging {
|
|||
jerseySelectorThread.setPort(REST_PORT)
|
||||
jerseySelectorThread.setAdapter(adapter)
|
||||
jerseySelectorThread.listen
|
||||
|
||||
log.info("REST service started successfully. Listening to port [" + REST_PORT + "]")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,12 +10,13 @@ import config.ConfiguratorRepository
|
|||
import com.sun.jersey.api.core.{DefaultResourceConfig, ResourceConfig}
|
||||
import com.sun.jersey.spi.container.servlet.ServletContainer
|
||||
import com.sun.jersey.spi.container.WebApplication
|
||||
|
||||
import java.util.HashSet
|
||||
|
||||
class AkkaServlet extends ServletContainer {
|
||||
class AkkaServlet extends ServletContainer{
|
||||
|
||||
override def initiate(rc: ResourceConfig, wa: WebApplication) = {
|
||||
// super.initiate(rc, wa)
|
||||
|
||||
Kernel.boot // will boot if not already booted by 'main'
|
||||
val configurators = ConfiguratorRepository.getConfiguratorsFor(getServletContext);
|
||||
val set = new HashSet[Class[_]]
|
||||
|
|
@ -26,6 +27,6 @@ class AkkaServlet extends ServletContainer {
|
|||
|
||||
wa.initiate(
|
||||
new DefaultResourceConfig(set),
|
||||
new ActorComponentProviderFactory(configurators));
|
||||
new ActorComponentProviderFactory(configurators))
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
BIN
lib/jersey-lift-1.1.2-ea-SNAPSHOT.jar
Normal file
BIN
lib/jersey-lift-1.1.2-ea-SNAPSHOT.jar
Normal file
Binary file not shown.
BIN
lib/lift-util-1.1-M3.jar
Normal file
BIN
lib/lift-util-1.1-M3.jar
Normal file
Binary file not shown.
BIN
lib/lift-webkit-1.1-M3.jar
Normal file
BIN
lib/lift-webkit-1.1-M3.jar
Normal file
Binary file not shown.
|
|
@ -1,10 +1,13 @@
|
|||
package sample.scala
|
||||
|
||||
import javax.ws.rs.{Path, GET, Produces}
|
||||
import javax.ws.rs.{Path, GET, Produces,QueryParam,DefaultValue}
|
||||
import se.scalablesolutions.akka.kernel.state.{TransactionalState, TransactionalMap, CassandraStorageConfig}
|
||||
import se.scalablesolutions.akka.kernel.actor.{Supervisor, SupervisorFactory, Actor, StartSupervisor}
|
||||
import se.scalablesolutions.akka.kernel.config.ScalaConfig._
|
||||
|
||||
import _root_.scala.xml.{NodeSeq}
|
||||
import se.scalablesolutions.akka.kernel.util.{Logging}
|
||||
|
||||
class Boot {
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
|
|
@ -38,22 +41,33 @@ class SimpleService extends Actor {
|
|||
private val storage = TransactionalState.newPersistentMap(CassandraStorageConfig())
|
||||
|
||||
@GET
|
||||
@Produces(Array("application/xml"))
|
||||
def count = (this !! Tick).getOrElse(<error>Error in counter</error>)
|
||||
@Produces(Array("text/html"))
|
||||
def count(@DefaultValue("unknown") @QueryParam("who") who : String) = {
|
||||
log.info(who)
|
||||
|
||||
(this !! Tick).getOrElse(view(<error>Error in counter</error>))
|
||||
}
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
case Tick => if (hasStartedTicking) {
|
||||
val counter = storage.get(KEY).get.asInstanceOf[Integer].intValue
|
||||
storage.put(KEY, new Integer(counter + 1))
|
||||
reply(<success>Tick: {counter + 1}</success>)
|
||||
reply(view(<success>Tick: {counter + 1}</success>))
|
||||
} else {
|
||||
storage.put(KEY, new Integer(0))
|
||||
hasStartedTicking = true
|
||||
reply(<success>Tick: 0</success>)
|
||||
reply(view(<lift:success>Tick: 0</lift:success>))
|
||||
}
|
||||
}
|
||||
|
||||
override protected def postRestart(reason: AnyRef, config: Option[AnyRef]) = {
|
||||
println("Restarting due to: " + reason.asInstanceOf[Exception].getMessage)
|
||||
}
|
||||
|
||||
def view(data : NodeSeq) : NodeSeq = <lift:surround with="default" at="content"> { data } <lift:Howdy.greet/></lift:surround>
|
||||
}
|
||||
|
||||
class Howdy
|
||||
{
|
||||
def greet = <h2>Hello mommy</h2>
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue