javascalaweblogicapache-camelscalate

Apache Camel web console's scalate servlet fails in WebLogic


I've found a similar issue described in detail in the scala mailing list (also here). It seems to be related to this change in classpath management when creating scala interpretation environments.

In my case both scala-library and scala-compiler are included in the war being deployed to WebLogic 10.3 (camel version: 2.8.0, jvm: oracle 1.6).

The exception is shown below:

com.sun.jersey.api.container.ContainerException: org.fusesource.scalate.TemplateException: object scala not found.
    at org.fusesource.scalate.jersey.ScalateTemplateProcessor.writeToUsingServletTemplateEngine(ScalateTemplateProcessor.scala:190)
    at org.fusesource.scalate.jersey.ScalateTemplateProcessor.writeTo(ScalateTemplateProcessor.scala:136)
    at org.fusesource.scalate.jersey.ScalateTemplateProcessor.writeTo(ScalateTemplateProcessor.scala:44)
    at com.sun.jersey.spi.template.ResolvedViewable.writeTo(ResolvedViewable.java:103)
    at com.sun.jersey.server.impl.template.ViewableMessageBodyWriter.writeTo(ViewableMessageBodyWriter.java:83)
    Truncated. see log file for complete stacktrace
Caused By: org.fusesource.scalate.TemplateException: object scala not found.
    at org.fusesource.scalate.TemplateEngine.compileAndLoad(TemplateEngine.scala:784)
    at org.fusesource.scalate.TemplateEngine.compileAndLoadEntry(TemplateEngine.scala:643)
    at org.fusesource.scalate.TemplateEngine.liftedTree1$1(TemplateEngine.scala:374)
    at org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:368)
    at org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:426)
    Truncated. see log file for complete stacktrace
Caused By: scala.tools.nsc.MissingRequirementError: object scala not found.
    at scala.tools.nsc.symtab.Definitions$definitions$.getModuleOrClass(Definitions.scala:653)
    at scala.tools.nsc.symtab.Definitions$definitions$.getModule(Definitions.scala:603)
    at scala.tools.nsc.symtab.Definitions$definitions$.ScalaPackage(Definitions.scala:145)
    at scala.tools.nsc.symtab.Definitions$definitions$.ScalaPackageClass(Definitions.scala:146)
    at scala.tools.nsc.symtab.Definitions$definitions$.AnyClass(Definitions.scala:176)

The question: is it possible to make camel web-console work in this environment?


Solution

  • No its a problem with WebLogic. Scalaete needs to add special support for WebLogic, as WebLogic does classloading a bit differently, than the usual practice.