¡La versión 2.0 de Play ya está lista! Ayúdanos a traducir la documentación de la útlima versión y sigue nuestro progreso.

Manuales, tutoriales & referencias

Consulte

Contenidos

Elija la versión

Buscar

Busque con google

Libros

Opciones de puesta en producción

Las aplicaciones hechas con Play pueden ser desplegadas prácticamente en donde sea: dentro de Servlet containers, en servidores independientes, en Heroku, Google Application Engine, Stack, en la nube computacional (cloud computing), etc...

Aplicaciones Play independientes (standalone)

La manera mas simple y robusta de poner en producción una aplicación hecha con Play, es corriéndola sin ningún tipo de contenedor. Puede usar un servidor HTTP frontal como Lighttp o Apache si precisa prestaciones avanzadas de HTTP como puede ser hosts virtuales.

El servidor HTTP que viene incluido con Play puede atender miles de pedidos HTTP por segundo, de manera que nunca se transformará en el cuello de botella de su aplicación. Más aún, utilizad un modelo de threads mucho más eficiente que el estándar (un Servlet container utiliza un único thread por request). También dispone de diferentes módulos que le permitirá utilizar otros servidores (Grizzly, Netty, etc...).

Esos servidores soportan lon polling y le permiten manejan pedidos HTTP largos (por ejemplo, cuando espera que se complete una tarea larga), así como efectuar streaming directo de objetos File (y de cualquier InputStream si especifica la propiedad Content-Length), sin por ello bloquear la ejecución del thread.

Va a tener menos problemas al ejecutar su aplicación de esta manera, dado que estará utilizando el mismo entorno para desarrollar que al poner en producción. Muchos bugs pueden ser descubiertos únicamente al poner en producción su aplicación en un servidor JEE (diferentes directorios, problemas con el classloader, conflictos con librerías, etc...).

Para más información consulte Poniendo su aplicación en producción.

Servidores de aplicaciones Java EE

Su aplicación hecha con Play también puede correr dentro de su servidor de aplicaciones favorito. La mayoría de los servidores de aplicaciones son soportados sin ninguna configuración en especial.

Servidores de aplicaciones soportados

Los siguientes servidores de aplicaciones funcionan correctamente con Play. Por favor, no deje de hacernos saber de cualquier otro entorno que funcione.

  • JBoss 4.2.x
  • JBoss 5.x
  • JBoss 6M2
  • Glassfish v3
  • IBM Websphere 6.1
  • IBM Websphere 7
  • Geronimo 2.x
  • Tomcat 6.x
  • Jetty 7.x
  • Resin 4.0.5

Poniendo en producción

Necesita empaquetar su aplicación en un archivo WAR. Puede hacerlo fácilmente mediante el siguiente comando:

play war myapp -o myapp.war

Tenga en cuenta que su servidor de aplicaciones debe soportar el despliegue de archivos WAR explotados (exploded WAR files).

Ahora ya está listo para poner en producción su aplicación.

Es recomendable ‘aislar’ su aplicación Play del resto de las aplicaciones para evitar conflictos de versiones entre las librerías. No hay un procedimiento estándar para realizar esto en la especificación JEE/Servlet, y los pasos a seguir varían según el proveedor.

Le recomendamos recurrir al manual de su servidor de aplicaciones para ‘aislar’ su archivo WAR. A modo de ejemplo, a continuación le mostramos cómo aislar un archivo war en un servidor de aplicaciones JBoss. Tenga en cuenta que este paso es opcional:

Inserte el siguiente contenido (o cree el archivo) en el archivo myapp.war/WEB-INF/jboss-web.xml del directorio de su aplicación war:


<jboss-web>
 <class-loading java2classloadingcompliance="false">
 <loader-repository>
 com.example:archive=unique-archive-name
 <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
 </loader-repository>
</class-loading>
</jboss-web>

Remplace com.example:archive=unique-archive-name con lo que usted quiera, siempre y cuando se trate de un nombre único.

Fuentes de datos

Play también soporta búsqueda de fuentes de datos (Datasource) y demás recursos. Para utilizar una fuente de datos JNDI, especifique la siguiente configuración de base de datos:

db=java:comp/env/jdbc/mydb
jpa.dialect=org.hibernate.dialect.Oracle10gDialect
jpa.ddl=verify

El plugin de base de datos detectará el patrón db=java: y desactivará el sistema JDBC que viene activado por defecto.

Personalizando el archivo web.xml

Algunos servidores de aplicaciones, como IBM Websphere, requieren que declare una fuente de datos en un element resource-ref en el archivo de configuración web.xml de la API de Servlet. Por defecto, Play generará el archivo web.xml cuando ejecute el comando play war. Para personalizar el archivo web.xml generado, debe generar el archivo WAR ‘explotado’, y luego copiar el archivo web.xml personalizado a la carpeta war/WEB-INF dentro de su aplicación. La próxima vez que ejecute play war, Play copiará el archivo web.xml que usted ha modificado de la carpeta generada.

Por ejemplo, para declarar una fuente de datos para IBM Websphere 7, puede declarar un resource-ref en su archivo war/WEB-INF/web.xml:

<?xml version="1.0" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">
  <display-name>Play! (%APPLICATION_NAME%)</display-name>
  <context-param>
    <param-name>play.id</param-name>
    <param-value>%PLAY_ID%</param-value>
  </context-param>
  <listener>
      <listener-class>play.server.ServletWrapper</listener-class>
  </listener>
  <servlet>
    <servlet-name>play</servlet-name>
    <servlet-class>play.server.ServletWrapper</servlet-class>	
  </servlet>
  <servlet-mapping>
    <servlet-name>play</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <resource-ref>
        <description>Play Datasource for testDatasource</description>
        <res-ref-name>jdbc/mydb</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
  </resource-ref>
</web-app>

Hosting de aplicaciones en la nube (Cloud-based hosting)

AWS Elastic Beanstalk

AWS Elastic Beanstalk es la plataforma de hosteo de aplicaciones provista por Amazon, basada en su infraestructura de Amazon Web Services. Para más información acerca de la puesta en producción de aplicaciones Play consulte Java development 2.0: Play-ing with Amazon RDS.

CloudBees

CloudBees es una plataforma de hosteo de aplicaciones Java. Para más información vea el módulo CloudBees.

Cloud Foundry

Cloud Foundry es el proveedor cloud de VMware. Para más información consulte Running Play Framework Application on CloudFoundry y el módulo CloudFoundry.

Google App Engine (GAE)

Google App Engine es una de las primeras opciones que surgieron para hosteo de aplicaciones en la nube computacional, y tiene diversas ventajas y desventajas comparadas con otras opciones más generales. En particular, GAE no soporta persistencia de objetos a través de JPA. Para más información consulte el módulo GAE.

Heroku

Heroku cloud application platform provee soporte específico para aplicaciones hechas con Play. Para desplegar y ejecutar su aplicación Play, siga los siguientes pasos:

1. Instale el cliente de línea de comandos de Heroku, siguiendo las instrucciones para Linux, Mac, o Windows.
2. Instale git y configure su clave SSH.
3. Cree una cuenta en Heroku.com.
4. Regístrese en Heroku desde la línea de comandos:

heroku auth:login

5. Cree un repositorio git:

git init

6. Cree un archivo .gitignore con el siguiente contenido, a fin de ignorar los archivos creados por Play:

/tmp
/modules
/lib
/test-result
/logs

7. Agregue los archivos al repostirio git y grábelos (commit):

git add .
git commit -m init

8. Cree una nueva aplicación en Heroku:

heroku create -s cedar

9. Haga un ‘push’ de la aplicación a Heroku:

git push heroku master

10. Abra la aplicación en un navegador web:

heroku open

Para ver los logs, ejecute:

heroku logs

Para ‘escalar’ la aplicación a múltiples ‘dynos’ ejecute:

heroku scale web=2

Para utilizar la Base de datos compartida de Heroku en producción agregue la siguiente configuración a su archivo conf/application.conf:

%prod.db=${DATABASE_URL}
%prod.jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
%prod.jpa.ddl=update

Para más información consulte Heroku Dev Center.

playapps.net

playapps.net es la opción de hosting de aplicación específicamente creada para Play por Zenexity, los creadores del framework. Para más información consulte playapps.net module.