ejecutar varias aplicaciones

23 views
Skip to first unread message

Paola Bruccoleri

unread,
Apr 28, 2015, 5:07:27 PM4/28/15
to Lista Play Latam
Hola todos!
Tengo una duda sobre cómo determinar que .jar se ejecuta.
La aplicación está montada sobre un server propio (Es un linux CentOS release 6.3 final, 64b); tenemos una ip fija
La aplicación se llama "acol" y lo que se obtiene del zip (play dist) está en /usr/acol/inst1


el script start tiene esto:
#!/usr/bin/env sh
exec java $* -cp "`dirname $0`/lib/*" play.core.server.NettyServer `dirname $0`

en la carpeta lib hay muchos jar, entre ellos: acol_2.9.1-2.0.10.jar

No sé de donde sale esta parte de la numeración: _2.9.1-. Lo otro sí porque yo voy incrementando el nro en appVersion.
¿Dónde está indicado que es ese .jar el que se levanta al poner en el navegador la ip fija de mi servidor??
¿cómo hago para instalar otra aplicación y ejecutarla?

quizás estas preguntas sean más de linux que otra cosa.. porque seguro eso debe estar en la configuración del apache...

muchas gracias!

Marco Otilio Peña Diaz

unread,
May 8, 2015, 3:59:22 AM5/8/15
to play-...@googlegroups.com
El 2.9.1 me suena a la versión de Scala con la que esta compilado tu proyecto. ¿Es de Java o de Scala?

Sobre el jar que se levanta, en realidad no es uno solo, como sería el caso de una aplicación de tomcat o de j2ee; cada aplicación de Play está autocontenida, o sea, que usa su propio servidor de web (en tu caso Netty), con su propio puerto de tcp. La aplicación usa todos los jar's que están en el directorio lib. No necesitas Apache. Puedes verlo como que todo es un sólo programa. Los urls que te contestan estan configurados en el archivo routes, que a su vez te dirigen a una clase heredada de Controller, que posiblemente están en algún paquete que se llama controllers.

Otra cosa, hasta donde tengo entendido, solo puedes tener una aplicación por instancia de Play (aunque puedes tener muchos módulos). Si quieres tener multiples aplicaciones, y todas escuchando en el mismo puerto, ahí si puedes usar el apache como proxy (aunque es mas facil con nginx :))

Paola Bruccoleri

unread,
May 8, 2015, 7:33:20 AM5/8/15
to play-...@googlegroups.com
Hola MArco..


El 08/05/2015 a las 4:59, Marco Otilio Peña Diaz escribió:
El 2.9.1 me suena a la versión de Scala con la que esta compilado tu proyecto. ¿Es de Java o de Scala?
el proyecto es de Java.. las vistas serán compiladas con scala, no sé..
La versión de play usada es la 2.0.4


Sobre el jar que se levanta, en realidad no es uno solo, como sería el caso de una aplicación de tomcat o de j2ee; cada aplicación de Play está autocontenida, o sea, que usa su propio servidor de web (en tu caso Netty), con su propio puerto de tcp. La aplicación usa todos los jar's que están en el directorio lib. No necesitas Apache. Puedes verlo como que todo es un sólo programa. Los urls que te contestan estan configurados en el archivo routes, que a su vez te dirigen a una clase heredada de Controller, que posiblemente están en algún paquete que se llama controllers.

Otra cosa, hasta donde tengo entendido, solo puedes tener una aplicación por instancia de Play (aunque puedes tener muchos módulos). Si quieres tener multiples aplicaciones, y todas escuchando en el mismo puerto, ahí si puedes usar el apache como proxy (aunque es mas facil con nginx :))
pero puede ser que cada apliación escuche diferentes puertos, no?? y eso se deberá, me imagino, configurar en apache.. en los virtualservers.. no?
Ya sé que la aplicación puede tener diferentes módulos.. esa podría ser una posibilidad ya que en definitiva se conectará a la misma base de datos q la otra, pero en realidad, serán aplicaciones que nada tienen que ver entre sí. Por ahora es un proyecto no inmediato, pero quería saber cómo se podría hacer.
Para esa ocasión tendré que crear webservice restfull. La idea es tener una aplicación en un celular que devuelva ciertos datos como deuda del cliente,etc.
La BD que usamos es muy particular, ADS (Advantage database server) y no veo de qué otra forma hacerlo desde un cel aunque me imagino que pueden haber otras opciones.
Muchas gracias!
saludos..

Marco Otilio Peña Diaz

unread,
May 8, 2015, 5:24:09 PM5/8/15
to play-...@googlegroups.com
Hola Pola

De hecho cada aplicacion debe escuchar en un puerto diferente, y ese lo especificas en el application.conf o cuando inicias el programa con --http.port=8888, para el puerto 8888 por ejemplo. Si tienes varias aplicaciones, cada una en su puerto, puedes hacer un proxy en el apache para que te redirija una peticion especifica a la aplicacion que quieres, por ejemplo:

url/app1 -> localhost:9000
url/app2 -> localhost: 9500

en apache configuras que url/app1 te redirija a la aplicacion corriendo en el puerto 9000, y que url/app2 te mande al puerto 9500. No necesariamente tienen que estar en localhost, incluso puede ser otro servidor.

No importa si tu app es una pagina mvc o un api restful, las aplicaciones en play se manejan de la misma manera



Reply all
Reply to author
Forward
0 new messages