Android Question Jrdc server running on android

walmo

Active Member
Licensed User
Longtime User
Hi
Is it possible to run the jrdc server on android pointing it to the server on the internet.
Moved the RDCConnector and RDCHandler to a b4a project , added on the libs.
But getting error now .

src\b4a\example\rdcconnector.java:55: error: cannot access PropertyVetoException
__ref._pool /*anywheresoftware.b4j.object.ConnectionPool*/ .Initialize(BA.ObjectToString(_config.Get((Object)("DriverClass"))),BA.ObjectToString(_config.Get((Object)("JdbcUrl"))),BA.ObjectToString(_config.Get((Object)("User"))),BA.ObjectToString(_config.Get((Object)("Password"))));
^
class file for java.beans.PropertyVetoException not found


Thanks
 

Albert Kallal

Active Member
Licensed User
What a interesting idea!
Unfortunately, there is some "in theory" setups that could perhaps be cobbled together with your idea?

No it not how the architecture works. = what you ask will not really work.

Now it is possible that you have a deep grasp and understanding of how this technology works, or perhaps you don't, and are reaching too far.

I don't know which camp you are coming from!

So, in case you reaching too far (and I apologize if you are not)?

The connector service running on the web site is what takes the commands send from your device/phone to the web server. The web server running that server must be sitting there with open arms to receive commands from your android. What that "service" is THEN do is pass on the commands to the database which is now actually a local system. So, even non server databases such as Access or even I think drivers for excel exist.

In other words, you can't just toss some commands to any web server. It has to be listening for a specific type of web request. That web request is received by that RDCConnector server/service. Once that web site has the request, then the web server has the ability to read and talk to the database. The SQL command thus pulls the data directly from the database running on that web server. Users and general requests to the web site cannot pull data or use the internal database system running behind that web site. It is ONLY that connector service and software is running ON that web server - exposed to the public that allows this to work). So the server connector is the bridge to the outside web, and the internal database system).

That service will take your request (as web call), then it can now go muck around internal, read the database directly. After it reads that data, then it spits it back out via the web server.

So, unless that web server has such a service exposed to the public or you as web calls? Then then running some connector service on your phone is of no use.

I can hit the amazon web site to buy a book. But I can't make a request to read from their database system behind that web site that drives provides all the data for that web site. So ONLY the web server can go read that database directly - it is not exposed to the outside world (can you imagine the security hole this would be?).

However, if that amazon site was to install that connector service? Then you could make requests to that database and by-pass the amazon book buy web site. And you not really by-passing the web site. The web site is still running that connector exposed as a web site service. You make calls to the web site through that connector service that is running on that web site or computer.

In effect, if you could and did get the connector service running on your phone? Well, that would make your phone look like a web site, and say other android phones could make requests to your phone, and it would in turn read from the local sqlLite database, and respond back out through your web site running on your phone.
As it stands now? Your phone can be on a wi-fi network, but I can't (my phone) can't make data requests to say a copy of sqlite running on your phone. However, running a web service and that connector software on your phone would ALLOW other phones to make requests to your phone.

Thus, it is possible your question and goal is to allow other phones or computers to make requests for data from YOUR phone - as that is what running that connector service on your phone would achieve. And that is of course why I found your question interesting!

Now if you look at all the above bits and parts? Well there is a part that evetually does hit and read the database directly! That is how those jdbc type 4 systems work. You in effect run the software on your phone, and WHEN the database system on the server is directly exposed, then you can communicate directly with the database and by-pass the web server 100%. However, in most cases, unless that database server is on your network, then direct requests are not possible unless the database is opened up to allow external connections. However, we have that choice now - the "direct" connection examples abound on these forums use this approach. And thus no connector service need run on either end. In effect, this setup becomes VERY similar to using a ODBC driver on one computer to connect to a database running on another computer.

To be fair, some web hosting companies do allow external ODBC connections to the database, but they are less common these days. However, SQL Azure, and databases on amazon "services" can be configured for direct access and use - and these setups by-pass the web server.

So your idea will not eliminate the need for that "service" to run and listen on that server. However, if you have the ability to open up the database for external use, then you can use the type 4 connection and one of the many examples kicking around here that allows direct connecting to a database. But this only works if someone is brave enough to open up the database to allow external connections. This is common on a local office network, but not for servers exposed to the wild and crazy internet.

Regards,
Albert D. Kallal
Edmonton, Alberta, Canada
 
Last edited:
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
jServer library will not work with B4A.
You can build jRDC2 based on MQTT for example. You can try to use jConnectionPool: https://www.b4x.com/android/forum/t...onpool-extracted-from-jserver.107776/#content
I'm not sure whether it will work with B4A or not.
Even without it it is possible to connect to the remove database with JdbcSQL. It will not be efficient as the real jRDC2 but it can work.

You will need to solve the network issues listed above. Example: https://www.b4x.com/android/forum/t...t-access-your-device-over-the-internet.26611/
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…