10
votes

Changer de port Scalatra

Cela semble basique, mais c'est en fait coûté une journée entière: je veux changer pour changer le port que Scalatra fonctionne, dans le développement. J'ai commencé avec le modèle World G8 de Hello World, et j'ai construit de là.

Voici ce que j'ai essayé jusqu'à présent: P>

Changer le port de Build.Scala, Documentation ALA: http://www.scalatra.org/guides/deployment/configuration.html Cela ne compile pas, car le port est indéfini. P>

Changer le port de Build.scala, ALA Ces deux exemples: https: gist.github.com azed 58AF6CFBFE721A562A48 https: / /github.com/jamesearbouglas/xsbt-web-plugin/blob/master/src/sbt-test/web/servlet/project/build.scala Même problème: le port est indéfini p>

redéfinir le point d'entrée, ALA http: www.scalatra.org guides de déploiement autonome.html Toujours fonctionne sur le port 8080 P>

Modification des paramètres init init dans Bootstrap, ALA http: www.scalatra.org guides configuration de déploiement.html Est toujours exécuté sur le port 8080 P>

Toute aide appréciée. Je ne peux pas publier plus de 2 liens pour une raison quelconque pour une raison quelconque, remplacez donc des espaces avec des barres obliques pour suivre les URL. P>

Voici mon build.scala au cas où il aide. P>

import sbt._
import Keys._
import org.scalatra.sbt._
import org.scalatra.sbt.PluginKeys._
import com.mojolly.scalate.ScalatePlugin._
import ScalateKeys._
import com.earldouglas.xsbtwebplugin._
import WebPlugin._

object YesManBuild extends Build {
  val Organization = "com.prezi"
  val Name = "Yes Man"
  val Version = "0.1.0-SNAPSHOT"
  val ScalaVersion = "2.10.2"
  val ScalatraVersion = "2.2.1"

  //def Conf = config("container")

  lazy val project = Project (
    "yes-man",
    file("."),
    settings = Defaults.defaultSettings ++ ScalatraPlugin.scalatraWithJRebel ++ scalateSettings ++ Seq(
      //port in Conf := 8081,
      mainClass := Some("com.prezi.eureka.JettyLauncher.main"),
      organization := Organization,
      name := Name,
      version := Version,
      scalaVersion := ScalaVersion,
      resolvers += Classpaths.typesafeReleases,
      libraryDependencies ++= Seq(
        "org.slf4j" % "slf4j-log4j12" % "1.7.5",
        "com.netflix.eureka" % "eureka-client" % "1.1.97",
        "com.netflix.ribbon" % "ribbon-httpclient" % "0.1.10",
        "com.netflix.ribbon" % "ribbon-eureka" % "0.1.11",
        "org.scalatra" %% "scalatra" % ScalatraVersion,
        "org.scalatra" %% "scalatra-scalate" % ScalatraVersion,
        "org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
        "ch.qos.logback" % "logback-classic" % "1.0.6" % "runtime",
        "org.eclipse.jetty" % "jetty-webapp" % "8.1.8.v20121106" % "container",
        "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar")),
        "org.eclipse.jetty.aggregate" % "jetty-all" % "9.0.4.v20130625"
      ),
      scalateTemplateConfig in Compile <<= (sourceDirectory in Compile){ base =>
        Seq(
          TemplateConfig(
            base / "webapp" / "WEB-INF" / "templates",
            Seq.empty,  /* default imports should be added here */
            Seq(
              Binding("context", "_root_.org.scalatra.scalate.ScalatraRenderContext", importMembers = true, isImplicit = true)
            ),  /* add extra bindings here */
            Some("templates")
          )
        )
      }
    )
  )
}


2 commentaires

Selon la documentation, le paramètre Build.Scala est le suivant: port dans conteneur.configuration: = 8081 mais vous l'avez comme port dans Conf: = 8081 . Avez-vous essayé exactement comme ils le précisent dans les documents?


Oui, j'ai essayé aussi


3 Réponses :


15
votes

Mise à jour 23.01.2016: Scalatra-SBT utilise XSBT-web-plugin 2.0.4 et quelques paramètres ont été modifiés. Vous pouvez trouver le xsbt-web-plugin docs ici A> (Remarque associée: Les intégrations pour XSBT-web-plugin, sbt-web, docker et autonome sont disponibles dans https://github.com/scalatra/scalatra-in-action , voir les répertoires chapter09- *)

Pour une application Scalatra cela signifie:. p>

  • Utilisez Jetty: Démarrer Code>, Jetty: Stop Code> Conteneur: Démarrer, Conteneur: Arrêtez LI>
  • Activer jettyplugin code> li>
  • Utilisez de nouvelles clés, par ex. ContainerPort dans une jetée: = 8090 code>, Cible dans WebAppPrePare code>, SourceDirectory dans webappPrepare code> li>
  • Seulement définition SBT Build Build: Utilisez les importations correctes pour importer les touches de plug-in et de réglage li> ul>

    une définition de construction .sbt: p> xxx pré>

    une définition de construction SBT basée sur une .Scala a moins de magie, et nous devons importer le plugin et son Paramètres: p> xxx pré>

    la définition de construction réelle avec acierplugins (jettyplugin) code> et un port personnalisé: p> xxx pré>


    Assurez-vous que vous utilisez les importations: p> xxx pré>

    avec ces importations, vous pouvez utiliser la touche et la configuration correcte: p>

    ...
    lazy val project = Project (
      "example",
      file("."),
      settings = Defaults.defaultSettings ++ ScalatraPlugin.scalatraWithJRebel ++ scalateSettings ++ Seq(
        port in container.Configuration := 9000,
        organization := Organization,
    ...
    


3 commentaires

Cela fonctionne parfaitement. Je vais voir si je peux les amener à ajouter ceci aux docs officiels depuis que leur exemple ne fonctionne pas sans cela.


Ces importations ne fonctionnent plus: objet xsbtwebplugin n'est pas membre du package com.earldouglas . Aucun conseil?


@Ahmedfasih j'ai mis à jour le poste aux dernières versions Scalatra-SBT et XSBT-Web-Plugin.



1
votes

J'ai fait cela et a travaillé: xxx


0 commentaires

0
votes

J'ai créé un fichier de construction vide.st à la racine de mon projet et de mettre:

port dans conteneur.configuration: = 8090

dans le fichier pour le travail.


0 commentaires