Hi all,
I'd like to hear from you about your considerations on how to "design" a multi-user B4J software given a few constraints.
The sw will run exclusively on a LAN. Portable devices will sync to the common DB while on the same LAN (most customers won't be able to install a VPN, so the LAN constraint). A powerful enough PC (having a fixed IP) will play the server role.
Currently I have a working single-user sw based on Sqlite which ease deployment (I mean, the user simply copy my jar file to a dir and run it; that will build the DB and all its tables).
In a recent past I ported a similar project to b4j+Mysql so I'm inclined to follow the same path. But I'm worried about the ability of any customer to install and activate MySql on a "server" PC on the LAN and how well multiple copies of the same sw will cope with record locking and concurrent access/update of data.
Another option could be to deploy a middle-layer in the form of a no-UI b4j server app that is the sole accessing the DB (which could be again Sqlite) while listening for commands and serving responses to all the client copies of the sw.
Edit: a possible webapp is not listed here because that would involve a major rewrite of the existing sw.
What do you foresee as pros and cons of the above designs and what did you use on real-world deployments?
TIA
udg
I'd like to hear from you about your considerations on how to "design" a multi-user B4J software given a few constraints.
The sw will run exclusively on a LAN. Portable devices will sync to the common DB while on the same LAN (most customers won't be able to install a VPN, so the LAN constraint). A powerful enough PC (having a fixed IP) will play the server role.
Currently I have a working single-user sw based on Sqlite which ease deployment (I mean, the user simply copy my jar file to a dir and run it; that will build the DB and all its tables).
In a recent past I ported a similar project to b4j+Mysql so I'm inclined to follow the same path. But I'm worried about the ability of any customer to install and activate MySql on a "server" PC on the LAN and how well multiple copies of the same sw will cope with record locking and concurrent access/update of data.
Another option could be to deploy a middle-layer in the form of a no-UI b4j server app that is the sole accessing the DB (which could be again Sqlite) while listening for commands and serving responses to all the client copies of the sw.
Edit: a possible webapp is not listed here because that would involve a major rewrite of the existing sw.
What do you foresee as pros and cons of the above designs and what did you use on real-world deployments?
TIA
udg