Skip to content
This repository was archived by the owner on Apr 4, 2026. It is now read-only.

Configuration

dlecan edited this page Jan 16, 2013 · 39 revisions

In the next descriptions, APP_HOME is the root of your Play2 application you want to package as a WAR file.

Add play2war plugin

In APP_HOME/project/plugins.sbt, add:

resolvers += "Play2war plugins release" at "http://repository-play-war.forge.cloudbees.com/release/"

addSbtPlugin("com.github.play2war" % "play2-war-plugin" % "0.9-RC1")

Import Play2War SBT settings

In APP_HOME/project/Build.scala, add:

...
import PlayProject._
import com.github.play2war.plugin._

Add all Play2war settings in your project configuration

val appVersion      = "1.0-SNAPSHOT"
...
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
  // ... Your own settings here
).settings(Play2WarPlugin.play2WarSettings: _*)
## Configure servlet container version

You have to choose on which kind of servlet container your Play2 application will be deployed:

  • Servlet 3.0: Tomcat 7, JBoss 7, JBoss EAP 6, Glassfish 3, Jetty 8, ...
  • Servlet 2.5: Tomcat 6, JBoss AS 5/6, JBoss EAP 5, Glassfish 2, Jetty 7, ...

If you get some 404 errors, you have probably choosen the wrong servlet container version.

val appVersion      = "1.0-SNAPSHOT"
...
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
  // ... Your own settings here
  Play2WarKeys.servletVersion := "3.0"
).settings(Play2WarPlugin.play2WarSettings: _*)

Don't look for any web.xml file in the generated WAR, Play2War uses annotation-driven servlet to be loaded.

Servlet 2.5 container configuration

val appVersion      = "1.0-SNAPSHOT"
...
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
  // ... Your own settings here
  Play2WarKeys.servletVersion := "2.5"
).settings(Play2WarPlugin.play2WarSettings: _*)

Play2War will generate a default war/WEB-INF/web.xml file for you if necessary (= doesn't exist). You can commit it in your SCM or modify it if needed (new filters, encoding, ...). This war/WEB-INF/web.xml will be then embedded in the generated WAR.

Configure logging

If you plan to use JBoss7, please read JBoss7 logging configuration instead.

You probably need to override default Play2 logging configuration because:

  • An external file will be written in $USER_HOME/logs/...

  • STDOUT appender pattern can be improved

Create a file APP_HOME/conf/logger.xml with the following content :

<configuration>
    
  <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
    </encoder>
  </appender>
  
  <logger name="play" level="INFO" />
  <logger name="application" level="INFO" />
  
  <!-- Off these ones as they are annoying, and anyway we manage configuration ourself -->
  <logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" />
  <logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" />
  <logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" />

  <root level="ERROR">
    <appender-ref ref="STDOUT" />
  </root>
  
</configuration>

Embed custom WAR configuration files

You can embed custom WAR configuration files, such as MANIFEST.MF, web.xml, ... For this, copy them in your APP_HOME/war folder. Don't forget to add subfolders !

Samples:

  • APP_HOME/war/myfile.txt will result in app_home.war!/myfile
  • APP_HOME/war/META-INF/MANIFEST.MF will result in app_home.war!/META-INF/MANIFEST.MF
  • APP_HOME/war/WEB-INF/web.xml will result in app_home.war!/WEB-INF/web.xml

Sepecial configurations

Configure runtime parameters

Several runtime parameters can be customized to fit your needs.

Next step

Continue with Usage.

Clone this wiki locally