¡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
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...
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.
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.
Los siguientes servidores de aplicaciones funcionan correctamente con Play. Por favor, no deje de hacernos saber de cualquier otro entorno que funcione.
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.
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.
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>
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 es una plataforma de hosteo de aplicaciones Java. Para más información vea el módulo CloudBees.
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 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 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 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.
Comentarios