2013-08-27 3 views
0

Я использую документацию по scalatra и плагин sbt-assembly для создания автономной банки. Он работает на моем локальном компьютере (Debian Wheezy с OpenJdk 1.7.0), но сбой на удаленной машине EC2 (Ubuntu 12.04.2 LTS) работает с тем же Jdk.Scalatra не может найти представление при развертывании в качестве автономного

Сообщение Исключение:

org.fusesource.scalate.util.ResourceNotFoundException: Could not load resource: [index.ssp]; are you sure it's within [/home/abc/src/main/webapp]? 
    at org.fusesource.scalate.servlet.ServletResourceLoader.createNotFoundException(ServletResourceLoader.scala:79) 
    at org.fusesource.scalate.util.ResourceLoader$class.resourceOrFail(ResourceLoader.scala:55) 
    at org.fusesource.scalate.servlet.ServletResourceLoader.resourceOrFail(ServletResourceLoader.scala:37) 
    at org.fusesource.scalate.util.UriResource.delegate(Resource.scala:91) 
    at org.fusesource.scalate.util.DelegateResource.text(Resource.scala:216) 
    at org.fusesource.scalate.ssp.SspCodeGenerator.generate(SspCodeGenerator.scala:152) 
    at org.fusesource.scalate.TemplateEngine.compileAndLoad(TemplateEngine.scala:750) 
    at org.fusesource.scalate.TemplateEngine.compileAndLoadEntry(TemplateEngine.scala:699) 
    at org.fusesource.scalate.TemplateEngine.liftedTree1$1(TemplateEngine.scala:419) 

Он говорит, что не может найти вид, но точно такой же файл банка работает на моей локальной машине.

+0

Руководство Scalatra говорит, что я могу развернуть банку http://www.scalatra.org/2.2/guides/deployment/standalone.html. Я это неправильно понял? – user2668128

ответ

2

Вам необходимо установить правильную базу ресурсов на встроенном Jetty. Вот три варианта:

  1. присоединять ресурсы для .jar файла, следуя инструкции в https://stackoverflow.com/a/17913254/1590415

    val rb = getClass.getClassLoader.getResource("webapp").toExternalForm 
    context.setResourceBase(rb) 
    
  2. положить ресурсы в папке в файловой системе

    val rb = "webapp" 
    context.setResourceBase(rb) 
    
  3. используйте плагин scalatra-sbt, он имеет задачу dist, которая создает дистрибутив .zip. Для рабочего проекта см. here. Вы можете вызвать задачу, введя dist в приглашении SBT.

    val myDistSettings = DistPlugin.distSettings ++ Seq(
        mainClass in Dist := Some("ScalatraLauncher"), 
        memSetting in Dist := "2g", 
        permGenSetting in Dist := "256m", 
        envExports in Dist := Seq("LC_CTYPE=en_US.UTF-8", "LC_ALL=en_US.utf-8"), 
        javaOptions in Dist ++= Seq("-Xss4m", "-Dfile.encoding=UTF-8") 
    ) 
    

В моем опыте Jetty нагрузки веб-ресурсов из .jar очень медленно, так что вы можете быть лучше положить их в папку в файловой системе. Варианты 2 и 3 загружают ресурсы из файловой системы.

+0

Загрузка Jar действительно медленная, я испытывал 10-кратное время отклика с шаблонами Усача на Скалатре. –