Spanish JRDC2

Guillermo Manoukian

Member
Licensed User
Hola a todos!, soy nuevo en el tema de B4A y estuve revisando un poco varios foros y veo que hablan mucho de JRDC y JRDC2(recomendado), como soy nuevo en esto mi pregunta es si este Middleware que codificó Erel se puede correr en Linux mediante, Apache, Tomcat, Daemon ú otra forma.

Alguno tiene alguna experiencia de implementación ó solución completa?, que no se mal interprete, no busco que alguien me resuelva todo el problema.
Quiero empezar por algún lado, me descargué B4J y leyendo un poco e investigando hice algunas pruebas de armar una aplicación cliente muy sencilla que busca 3 columnas en MariaDB y me las muestra en un TableView. La experiencia fué muy buena conseguí compilar el .jar y que funcione.
Quise copiar el mismo ejemplo en B4A y me encontré que no era tan sencillo conectarse remotamente a un servidor MySQL.

Gracias de antemano.
 

José J. Aguilar

Well-Known Member
Licensed User
Hola Guillermo:

En este hilo puedes ver algo de información que quizás te aclare algunos conceptos, a mí me costó un poco lo JRDC2

https://www.b4x.com/android/forum/threads/how-to-connect-to-mysql-database.98619/page-2#post-626074

Verás, cuando tú compilas el servidor middleware de JRDC2, obtienes un fichero .jar en la carpeta Objects. Ese jar, se ejecuta con Java, con lo cual lo puedes ejecutar en windows, mac, linux... Es exactamente igual que la aplicación que hiciste en B4J, lo ejecutas igual, y desde tu app B4A accedes al servidor que has creado.

suerte y al lío¡¡
 

Guillermo Manoukian

Member
Licensed User
José, gracias por responder! lanzo la pregunta pero lo voy a investigar, tengo un DEBIAN9 con un Apache+PHP+Tomcat, entiendo que este Middleware viene a reemplazar toda la solución que tengo instalada, el tema es que me confunde un poco como correr esto desde la consola de Linux, va a correr sin problemas o errores?. Vi por ahi que alguien mencionaba que usaba java -jar bla bla bla nohu no se cuanto(lo quiero investigar nuevamente) pero no encontré a nadie que diera afirmaciones de que la solución le funcionara, muchas preguntas, pocas respuestas. Entiendo que en los foros no se pueden pedir soluciones hechas, para eso son foros, pero veo mucha gente posteando pero nadie te asegura que funcione.

Gracias de antemano!
 

Guillermo Manoukian

Member
Licensed User
Hola Guillermo:

En este hilo puedes ver algo de información que quizás te aclare algunos conceptos, a mí me costó un poco lo JRDC2

https://www.b4x.com/android/forum/threads/how-to-connect-to-mysql-database.98619/page-2#post-626074

Verás, cuando tú compilas el servidor middleware de JRDC2, obtienes un fichero .jar en la carpeta Objects. Ese jar, se ejecuta con Java, con lo cual lo puedes ejecutar en windows, mac, linux... Es exactamente igual que la aplicación que hiciste en B4J, lo ejecutas igual, y desde tu app B4A accedes al servidor que has creado.

suerte y al lío¡¡
Una aclaración: La aplicación que codifiqué, la corrí en Windows haciendo click en el .jar y como está instalado JAVA para mi sorpresa funcionó sin inconvenientes. Pero en Linux desde la consola es muy diferente, eso mismo .jar trajo muchos errores porque no es un servicio, tiene información que necesita una interfaz para mostrar los resultados. Por eso se me generaron tantas preguntas y dije: la solución de Erel no va a correr tan sencillo en un Linux desde una consola...

Saludos!
 

José J. Aguilar

Well-Known Member
Licensed User
No hay de qué.
tengo un DEBIAN9 con un Apache+PHP+Tomcat, entiendo que este Middleware viene a reemplazar toda la solución que tengo instalada
No sé si lo entiendo bien. Aunque con B4J puedes hacer un servidor web completo o páginas web, en este caso sólo haces la parte que accede a la base de datos. No sé si la solución que tienes con apache+php+tomcat la tienes sólo para acceder a la base de datos y servir datos a la aplicación o si tienes hecho una web para gestionar la base de datos etc... Como te digo, JRDC2 sólo sustituirá al acceso a datos para servirlos a la app.
va a correr sin problemas o errores?. Vi por ahi que alguien mencionaba que usaba java -jar bla bla bla nohu no se cuanto
No soy un experto, pero sí, correrá sin problemas. Cuando estás desarrollando, verás en los logs de B4J los problemas que tengas en el acceso a la base de datos. Estos mismos mensajes son los que verás que se guardan en el archivo de registro.
Por ejemplo, yo lo tengo en un servidor Synology, lo ejecuto como
B4X:
nohup /var/packages/Java8/target/j2sdk-image/bin/java -jar /volume1/web/jRDC.jar > /volume1/web/nohup.out
Y efectivamente, en el fichero nohup.out veo los mensajes de registro
B4X:
jRDC is running (version = 2.21)
(SQLException) java.sql.SQLException: Field 'NA' doesn't have a default value
(IllegalStateException) java.lang.IllegalStateException: WRITER
Command: , took: 9264ms, client=193.152.121.148
Pero en Linux desde la consola es muy diferente, eso mismo .jar trajo muchos errores porque no es un servicio
En este caso, busca info de cómo ejecutar una aplicación Java desde linux como un servicio, estoy seguro de que no será complicado y será cuestión de agregar a algún archivo .ini una línea del tipo de lo que te he puesto arriba
 

Guillermo Manoukian

Member
Licensed User
No hay de qué.

No sé si lo entiendo bien. Aunque con B4J puedes hacer un servidor web completo o páginas web, en este caso sólo haces la parte que accede a la base de datos. No sé si la solución que tienes con apache+php+tomcat la tienes sólo para acceder a la base de datos y servir datos a la aplicación o si tienes hecho una web para gestionar la base de datos etc... Como te digo, JRDC2 sólo sustituirá al acceso a datos para servirlos a la app.

No soy un experto, pero sí, correrá sin problemas. Cuando estás desarrollando, verás en los logs de B4J los problemas que tengas en el acceso a la base de datos. Estos mismos mensajes son los que verás que se guardan en el archivo de registro.
Por ejemplo, yo lo tengo en un servidor Synology, lo ejecuto como
B4X:
nohup /var/packages/Java8/target/j2sdk-image/bin/java -jar /volume1/web/jRDC.jar > /volume1/web/nohup.out
Y efectivamente, en el fichero nohup.out veo los mensajes de registro
B4X:
jRDC is running (version = 2.21)
(SQLException) java.sql.SQLException: Field 'NA' doesn't have a default value
(IllegalStateException) java.lang.IllegalStateException: WRITER
Command: , took: 9264ms, client=193.152.121.148

En este caso, busca info de cómo ejecutar una aplicación Java desde linux como un servicio, estoy seguro de que no será complicado y será cuestión de agregar a algún archivo .ini una línea del tipo de lo que te he puesto arriba

Excelente José, más tarde voy a echarle mano un poco a esto que enviaste, me aclaraste un poco las dudas. Gente así hace falta en los foros, no tuve buenas experiencias en otros foros de programación, hay mucha gente rencorosa que postea cosas incompletas, en vez de ayudarte, te confunden más y terminas saliendote porque no hay buenas experiencias. Tengo 2 reglas cuando ingreso a un foro: 1. Si no sabes, no opines, 2. Si sabes, es mejor que sepas y tu ayuda sirva. Después está del otra lado saber un poco de programación y reforzar conocimientos buscando lo que uno no sepa.

Gracias amigo!
 

Seneca

Active Member
Licensed User
Hola.

Aunque el tema JRDC2 es un tema que no domino y dejé aparcado temporalmente hace varias semanas, sí que estuve haciendo alguna prueba corriendo el jRDC.jar desde un servidor Linux (VPS) y no tuve ningún problema en la ejecución. Este Jar no necesita interfaz para mostrar resultados, sino que estos son devueltos a quien hace la consulta.

También utilicé nohup para correr el .jar en el VPS (http://rm-rf.es/nohup-mantiene-ejecucion-comando-pese-salir-terminal/)

Saludos.
 

Guillermo Manoukian

Member
Licensed User
Hola.

Aunque el tema JRDC2 es un tema que no domino y dejé aparcado temporalmente hace varias semanas, sí que estuve haciendo alguna prueba corriendo el jRDC.jar desde un servidor Linux (VPS) y no tuve ningún problema en la ejecución. Este Jar no necesita interfaz para mostrar resultados, sino que estos son devueltos a quien hace la consulta.

También utilicé nohup para correr el .jar en el VPS (http://rm-rf.es/nohup-mantiene-ejecucion-comando-pese-salir-terminal/)

Saludos.
Impecable @Seneca ya estuve jugando y es como decís Vos y @José, el .jar es un servicio y funciona como tal!, no necesita interfaz gráfica y funciona perfectamente!. Aún en Debian y desde la consola!, me faltan hacer más pruebas pero vengo bien con la tarea de aprendizaje.

Excelente muchachos!
 
Top