开发者

Combining Akka, Spray, and embedded Jetty

开发者 https://www.devze.com 2023-03-28 11:25 出处:网络
I\'m trying to create a standalone JAR containing Akka, Spray, and Jetty. Ideally I distribute the entire application in that single file, without any external files whatsoever.

I'm trying to create a standalone JAR containing Akka, Spray, and Jetty. Ideally I distribute the entire application in that single file, without any external files whatsoever.

I understand how to create an embedded Jetty server instance

def main(args: Array[String]): Unit = {
    val server = new Server(9012);
    server.start();
    server.join();
    Thread.sleep(2000);
    server.stop();
}

and I've followed the Spray example code in creating a HelloService and Boot class, but I have no earthly idea of how to connect the two, so that when a URL is requested on the Jetty server a Spray service responds to it. Any help would be much appreciat开发者_运维问答ed.

Update: I'm getting a lot closer to solving this problem, thanks to a thread of inquiry prompted by Alois Cochard (I'm coming from a web scripting background, and getting my head around Java web services has been ... challenging!). I've modified my main method to start the server and read the Jetty and akka configuration files that are in the getting started template. It's reading both of those files, but now I'm getting this when I navigate to / on the Jetty server:

HTTP ERROR: 500

Problem accessing /. Reason:

assertion failed: 0 actors for id 'spray-root-service' found, expected exactly one

I know I'm missing something silly (and probably that I should break down and use SBT, but being able to just compile and run in Eclipse, and then refresh in the browser, is so simple and appealing).

Update #2: Figured out the problem. I wasn't creating a WebAppContext object, which meant that the web.xml was never getting read, and thus Akka was never being loaded. This is the revised main method which is now working.


According to the spray-template, you should add the Spray servlet connector in the web.xml configuration file:

http://github.com/spray/spray-template/blob/master/src/main/webapp/WEB-INF/web.xml

You can find some informations about how to configure a standealone jetty to use this file here (there is surely better references in netty documentation directly):

http://exist.sourceforge.net/deployment.html#d47e594

BTW, using the spray template as a basis for your project looks like a good idea ;)

0

精彩评论

暂无评论...
验证码 换一张
取 消