earldouglas / sbt-war

Package and run .war files with sbt
BSD 3-Clause "New" or "Revised" License
382 stars 105 forks source link

My server launches but I cannot access it using browser. Wrong context path ? #197

Closed unoexperto closed 9 years ago

unoexperto commented 9 years ago

Could you please help me understand what I'm missing in my config ? My server launches but I cannot access it using browser. In SBT console I see following message

2014-11-13 19:32:24.659:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@28f67ac7{/,file:/C:/work/sideprojects/companyname/tt_dev/target/webapp/,STARTING}{file:/C:/work/sideprojects/companyname/tt_dev/target/webapp/}

Also in the log I see that all servlets got initialized which kicked off DB connection pools and etc. But when I open http://localhost:8080/ I see

HTTP ERROR: 503

Problem accessing /. Reason:

    Service Unavailable
Powered by Jetty://

What am I missing ?

Here is my build.scala

import sbt._
import Keys._
import sbtassembly.Plugin.{MergeStrategy, AssemblyKeys, assemblySettings}
import AssemblyKeys._
import play.twirl.sbt.SbtTwirl
import spray.revolver.RevolverPlugin.Revolver
import com.earldouglas.xwp.XwpPlugin
import com.earldouglas.xwp.XwpPlugin._

object ProjectBuild extends Build {

  implicit def dependencyFilterer(deps: Seq[ModuleID]) = new Object {
    def excluding(group: String, artifactId: String) =
      deps.map(_.exclude(group, artifactId))
  }

  lazy val root = {
    val jarsToInclude = "concurrentlinkedhashmap-lru-1.4.jar" || "javassist-3.18.1-GA.jar" || "quartz-2.2.1.jar" || "objenesis-2.1.jar" || "minlog-1.2.jar" || "original-kryo-2.23.1-SNAPSHOT.jar" || "xml-apis-1.4.01.jar" || "bforeport.jar" || "cos.jar" || "jmq.jar" || "jms.jar" || "jradius.jar" || "jradius-dictionary.jar" || "mpxj.jar" ||
      "ojdbc6.jar" || "oraxdb.jar" || "packtag-3.8.jar" || "ncpro.jar" || "xmlparserv2.jar" || "orai18n-mapping.jar"

    Project(
      id = "root",
      base = file("."),
      settings = Project.defaultSettings ++
        assemblySettings ++
        net.virtualvoid.sbt.graph.Plugin.graphSettings ++
        XwpPlugin.warSettings ++ XwpPlugin.webappSettings ++ XwpPlugin.jetty(port = 8080) ++ Seq(

        webappSrc in webapp <<= (baseDirectory in Compile) map  { _ / "webroot" },
//        webInfClasses in webapp := true,

        name := "arena",
        organization := "com.companyname",
        version := "1.0",
        scalaVersion := "2.11.4",
        resolvers ++= Seq(
          "jasperreports" at "http://jasperreports.sourceforge.net/maven2/"
        ),
        javaSource in Compile := baseDirectory.value / "src",
        unmanagedSourceDirectories in Test ++= Seq("cucumber/java/companyname", "integration/java", "selenium/src", "unit/java").map(value => baseDirectory.value / "test" / value),
        unmanagedBase in Compile := baseDirectory.value / "jars",
        includeFilter in(Compile, unmanagedJars) := jarsToInclude,

        unmanagedBase in Test := baseDirectory.value / "test/selenium/lib",
        excludeFilter in(Test, javaSource) := "selenium/docs/*.*",
        includeFilter in(Test, unmanagedJars) := "seleniumframeworkAPI.jar",

        dependencyOverrides += "xml-apis" % "xml-apis" % "1.4.01",
        libraryDependencies ++= {
          val axisVersion = "1.6.2"
          val seleniumVersion = "2.39.0"
          val axiomVersion = "1.2.12"
          Seq(
            "org.elasticsearch" % "elasticsearch" % "1.4.0.Beta1",
            "com.sksamuel.elastic4s" %% "elastic4s" % "1.3.2",

            "org.apache.ws.commons.axiom" % "axiom-dom" % axiomVersion,
            "org.apache.ws.commons.axiom" % "axiom-impl" % axiomVersion,
            "org.apache.ws.commons.axiom" % "axiom-api" % axiomVersion,

            "org.apache.axis2" % "axis2" % axisVersion,
            "org.apache.axis2" % "axis2-transport-http" % axisVersion excludeAll(
              ExclusionRule(organization = "javax.servlet", name = "servlet-api"),
              ExclusionRule(organization = "org.apache.httpcomponents", name = "httpcore")),
            "org.apache.httpcomponents" % "httpcore" % "4.3",

            "org.apache.axis2" % "axis2-transport-local" % axisVersion, // not used by code
            "net.jawr" % "jawr" % "3.3.3", // needs log4j in runtime?
            "log4j" % "log4j" % "1.2.17" intransitive(),
            "commons-beanutils" % "commons-beanutils" % "1.9.1",
            "commons-cli" % "commons-cli" % "1.2",
            "commons-codec" % "commons-codec" % "1.4",
            "commons-collections" % "commons-collections" % "3.2",
            "commons-digester" % "commons-digester" % "2.1",
            "org.apache.commons" % "commons-email" % "1.2",
            "commons-fileupload" % "commons-fileupload" % "1.2",
            "commons-httpclient" % "commons-httpclient" % "3.1",
            "commons-io" % "commons-io" % "1.4",
            "commons-lang" % "commons-lang" % "2.4", // loads 2.6 instead...
            "org.apache.commons" % "commons-lang3" % "3.2",
            "commons-logging" % "commons-logging" % "1.1",
            "org.json" % "json" % "20140107",
            "org.antlr" % "antlr" % "3.3",
            "javax.servlet" % "servlet-api" % "2.3" % "provided",
            "javax.servlet" % "jsp-api" % "2.0" % "provided",
            "org.tuckey" % "urlrewritefilter" % "3.2.0",
            "com.google.guava" % "guava" % "18.0",
            "backport-util-concurrent" % "backport-util-concurrent" % "2.2",
            "joda-time" % "joda-time" % "2.3",
            "org.apache.poi" % "poi" % "3.9",
            "org.apache.poi" % "poi-ooxml" % "3.9",
            "org.apache.ant" % "ant" % "1.9.1",
            "com.itextpdf" % "itextpdf" % "5.0.6",
            "com.mortennobel" % "java-image-scaling" % "0.8.5",
            "org.springframework" % "spring" % "2.5.6.SEC01",
            "com.ibm.icu" % "icu4j" % "52.1",
            "com.google.code.gson" % "gson" % "1.6",
            "org.codehaus.jettison" % "jettison" % "1.0",
            "net.sf.jasperreports" % "jasperreports" % "3.7.1",
            "net.sf.jasperreports" % "jasperreports-fonts" % "4.0.0",
            "rome" % "rome" % "1.0",
            "javax.ws.rs" % "jsr311-api" % "1.0",
            "xalan" % "xalan" % "2.7.0",
            "org.jibx" % "jibx-run" % "1.2",
            "org.jibx" % "jibx-bind" % "1.2",
            "com.sun.xml.bind" % "jaxb-xjc" % "2.1.7", // not used
            "org.seleniumhq.selenium" % "selenium-server" % seleniumVersion % "test",
            "org.seleniumhq.selenium" % "selenium-java" % seleniumVersion % "test",
            "junit" % "junit" % "4.10" % "test",
            "junit" % "junit-dep" % "4.10" % "test",
            "info.cukes" % "cucumber-html" % "0.2.3" % "test",
            "info.cukes" % "cucumber-core" % "1.1.1" % "test",
            "info.cukes" % "cucumber-junit" % "1.1.1" % "test",
            "info.cukes" % "cucumber-java" % "1.1.1" % "test",
            "info.cukes" % "cucumber-picocontainer" % "1.1.1" % "test",
            "org.eclipse.jetty" % "jetty-server" % "8.1.7.v20120910" % "test",
            "org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "test",
            "org.mockito" % "mockito-all" % "1.9.0" % "test",
            "org.hamcrest" % "hamcrest-all" % "1.1" % "test",
            "org.jmockit" % "jmockit" % "1.10" % "test",

            "com.googlecode.xmemcached" % "xmemcached" % "1.4.3"

          ).excluding("xerces", "xercesImpl")
        },
        scalacOptions := Seq("-g:vars", "-unchecked", "-language:reflectiveCalls,postfixOps,implicitConversions", "-deprecation", "-feature", "-encoding", "utf8", "-target:jvm-1.6"),
        javacOptions in Compile ++= Seq("-source", "1.6", "-target", "1.6"),
        javacOptions in doc ++= Seq("-source", "1.6"),
        crossPaths := false,
        artifactName := {
          (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
            artifact.name + "." + artifact.extension
        },
        mainClass in assembly := Some("com.borsch.Boot"),
        jarName in assembly := "api_standalone.jar",
        test in assembly := {},
        assembleArtifact in packageScala := false, // prevents sbt assembly from packaging dependencies into main jar
        assembleArtifact in packageDependency := false, // prevents sbt assembly from packaging dependencies into main jar
        mergeStrategy in assembly <<= (mergeStrategy in assembly) {
          (old) => {
            case "rootdoc.txt" => MergeStrategy.discard
            case "META-INF\\CHANGES.txt" => MergeStrategy.discard
            case "META-INF\\LICENSES.txt" => MergeStrategy.discard
            case x => old(x)
          }
        }

      )
    ).enablePlugins(SbtTwirl)
  }

}

Thanks!

PS. I forgot to mention. I launch jetty using container:start. Also same project runs correctly from IDEA's run configuration (with Jetty too).

earldouglas commented 9 years ago

While I don't expect it to be a problem, you can drop both XwpPlugin.warSettings and XwpPlugin.webappSettings from your configuration, since they're automatically included when you use XwpPlugin.jetty(port = 8080).

  1. What is the structure of your webroot directory?
  2. Can you post the complete log output? It looks like something goes wrong when launching Jetty.
  3. Any chance you can post the full project?
unoexperto commented 9 years ago

Looks like missing jawr.properties was causing exception in one of the servlets. Interestingly it was ignored in full Jetty, but doesn't work with jetty-runner. Nevertheless it was my bug. Sorry guys.