Built Openfire XMPP Server with 2 MySQL database instances ("Master-Master" replicated servers). Trying to achieve database load balancing.
After googling, found native way to achieve load balancing.
http://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-j2ee-concepts-managing-load-balanced-connections.html
During XMPP installation, there is step where I can manually enter database connection string.
The question is
if my connection string will look like below
jdbc:mysql:loadbalance://[host1][:port],[host2][:port][,[host3][:port]]...[/[database]] ยป
[?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
will Java's MySQL driver balance connection between multiple servers regardless of which application uses it?
BTW,
There is, database connection statistics on XMPP server. I refresh every time, and it shows me only 1 IP as Database IP. Not randomly changing MySQL servers' ip addresses (from JDBC conection string).
Related
For a university project, we were taught to use JDBC to connect to a MariaDB database. The database was created on localhost:3306.
This is what we used:
Connection connection = DriverManager.getConnection("jdbc:mariadb://localhost:3306/dbname", username, password);
I am now doing an online group project using GitHub. How would my group partners gain access to this database if it is not on their local machine? I read somewhere about SQLdump but I couldn't seem to get it working. If I successfully did an SQLdump, could I just include the file in github and it would work for them?
Otherwise, would I need to put it on a public server?
First you need to decide whether you want to share the data or the database:
share data
This will put copies of data to your group members. Every one of you has his/her own copy in a locally installed MariaDB database, and every one of you can access it using localhost in the connection string.
https://mariadb.com/kb/en/backup-and-restore-overview/
The sql dump file can be easily shared with others. If you find the backup/restore stuff is getting tedious and merging the data is a requirement, check for https://www.liquibase.org/, or even consider going for the shared database.
shared database
Ensure your MariaDB server not only binds to localhost (127.0.0.1) but also to your machine's public IP.
open your machine's firewall to allow access to this IP. Maybe you have to look at more firewalls to be opened (e.g. your router).
create user accounts that are allowed to connect from their respective host or from any host (https://mariadb.com/kb/en/create-user/#account-names)
You can do all that from your local development machine. If you find the network or uptime requirements are not comfortable, switch to a dedicated server. This may be a cloud solution or on-premise, whatever is comfortable for you.
Suppose, I have a website for a school to collect students information and data.And my site has a MySQL databse.So how can I or my desktop application get those data from my site's database?Basically, when I use MySQL for my desktop application I write some line of codes to connect with my local MySQL database which is given below.
public settingdatabase(){
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/rgacd","root", "");
stat = con.createStatement();
}catch(Exception ex){
System.out.println("Error: "+ex);
}
}
But when I try to connect with any HTTP site's database throough my desktop application what should I do.
Thanks In Advance. :D
Typically there are firewalls involved. Many networks running web servers will only accept incoming http/https connections (ports 80 and 443). Other ports (such as 3306 to connect to a mysql database) are closed to the outside world. The web server for the site often connects to an application server (e.g. Tomcat) that has network privileges to access the internal database.
So the simple answer is usually you can't directly connect to the database backing any arbitrary website because you don't have access to it.
Here is a somewhat typical architecture courtesy of Tivoli and an IBM slide deck:
By design, in most cases, direct access to the RDBMS is simply inaccessible to the users outside the firewall.
Now, in the unusual case that the firewall allowed an open port to connect to the database from any external machine, then you could connect to the machine via a jdbc network connection (the same as you are doing by accessing the database over localhost:3306). To establish such a connection you would need to use the publicly available address of the database machine (which may or may not be the same as the address used for the http connection, depending upon the network configuration of the system).
I made an inventory system in netbeans using the language java and i connect it to derby as my database it is already working as a whole system but I want to have a client-server functionality what I mean is I want my program to have a server which holds the database(different computer) and different users with different computers which they can save/view data at the same time to the database means they are connected in one network.
Working with multiple connections to a single database.
What code can I use or method or do I have to import something?
I did some research and the only thing that I found is socket which can be used to create a chat between server and a client.
But I only tried the IP 127.0.0.1 for the client since I am making running the server and the client in the same computer.
And also can I open the connection of the server in the client form and send data like SQLQuery so I can save it in the database of the server?
Where can I see examples for these? Please help thanks
Yes, Derby supports a client-server configuration of your application.
Deploying your application in the client-server configuration is straightforward:
Deploy the Derby Network Server, for example by running the startNetworkServer script that is included with the Derby distribution.
Ensure that derbyclient.jar is in your application's CLASSPATH, and that you register "org.apache.derby.jdbc.ClientDriver" with the JDBC DriverManager.
Change your JDBC Connection URL from jdbc:derby:<db details> to jdbc:derby://<host:port>/<db details>.
If this is your first time using Derby, I strongly recommend working your way through the Derby tutorial at https://db.apache.org/derby/docs/10.12/getstart/index.html
For more information about running the Derby Network Server to service database requests for your applications, read the Derby Admin Guide: https://db.apache.org/derby/docs/10.12/adminguide/index.html
Use the IP 0.0.0.0 or for all connections in the server. The the connection url should include the name of the server or the ip address of the server in the network. When you use ip 127.0.0.1 or localhost derby can only accept connections to the database in the same machine, in this case localhost. All of this can be done by your network application server
I have created a standalone application as a school project. The major problem we are encountering is that since it has Java as front-end and MySQL as back-end (compulsory), and we have created a database that solely belongs to one computer, we cannot run the same project on different machines because it won't have the required database, the tables, or the same username and password we used to connect to MySQL.
So my question is **How can I connect to MySQL server in different Machines? **
For database and Tables, I could run a sql file, but that will happen when I would be connected to the MySQL server. Also I am developing the project at my home computer, and I want to run the project on different computers who are connected to my computer by no means .
You a following options
Shared drive : Attach database stored on remote shared drive to a local SQL Server read here
Connect to remote SQL Server instance from local computer - better if they are in same LAN - Steps here
If you want to package DB with app where you have predefined data and you dont want to save transactional data - use inMemory DB. They will load when you application starts up.
Already your application can work using different machine.
You have only to change the localhost string in your connection string with the IP of the MySQL machine :
DriverManager.getConnection("jdbc:mysql://localhost/database?"+ "user=sqluser&password=sqluserpw");
And make sure that remote access are enabled in your MySQL configuration. You can find more about it here.
Instead of using localhost in your database connection string, you should use the ip or aname of the database host
e.g.
jdbc:mysql://IP:3306/db?user=user&password=password
jdbc:mysql://A-NAME/db?user=user&password=password
Just make sure that port 3306 is open and that you have access on the system the databasse is hosted on
Hi I am trying to connect through JDBC on an Advantage local server.
I have tested many connections strings, like for example:
connection = DriverManager.getConnection(
"jdbc:extendedsystems:advantage://localhost:6262;catalog=C:\\bdl\\database\\BDL.add;TableType=cdx;LockType=proprietary", "adssys", "no");
I am searching for over three days now. I am getting always the error message connection refused. I only want to connect and access the files , and not on any advanced database server. I have now idea any more.
The ADS JDBC driver doesn't support ALS (Advantage Local Server), you have to install an actual ADS server.
http://devzone.advantagedatabase.com/dz/webhelp/Advantage10.1/devguide_ads_and_java_1.htm
If you have a running ADS server make sure there is no firewall that blocks traffic on port 6262 (or whatever port you're using).