指定した部分に同時にアクセスできるユーザーが 1 人だけになるように、mysql クエリを同期する必要があります。試しsynchronized(){}
ましたが、これはうまくいきません。ユーザーはメソッドに同時にアクセスできます。これは tomcat6 を使用した jsp Web アプリケーションです。あまりにも多くのユーザーが同時にクエリを実行すると Web サーバーがクラッシュするため、これが必要です。
String sql = "SELECT * FROM products;"
ResultSet rs;
//This block should be synchronized
Statement s = con.createStatement();
rs = s.excecuteQuery(sql);
while (rs.next()) {
// do some stuff..
}
助けてくれてありがとう。
編集:同期しようとした方法
public class connect {
public static String URL = "url";
public static String USER = "root";
public static String PASSWORD = "password";
private Object lock = new Object();
public void getData() {
Connection con;
try {
con = DriverManager.getConnection(URL, USER, PASSWORD);
String sql = "SELECT * FROM products;";
ResultSet rs;
//This block should be synchronized
synchronized(lock) {
Statement s = con.createStatement();
rs = s.executeQuery(sql);
while (rs.next()) {
// do some stuff..
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
lock
オブジェクトはサーバーに保存する必要があると思います。しかし、これを行う正しい方法は何ですか?