0

サーバー内のデータベースをポーリングして、新しいレコードが追加されているかどうかを確認しようとしています。新しいレコードがある場合は、新しいレコードを使用してJavaアプリケーションにhttpリクエストを送信します。

これはGETリクエストです。

public class PHPDataChecker implements Runnable {
public static String output;
public void run(){
  try {
    URL url = new URL("http://taxi.net/login.php");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setRequestProperty("Accept", "application/json");

    if (conn.getResponseCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                + conn.getResponseCode());
    }

    BufferedReader br = new BufferedReader(new InputStreamReader(
        (conn.getInputStream())));


    System.out.println("Output from Server .... \n");
    while ((output = br.readLine()) != null) {
        System.out.println(output);
    }

    conn.disconnect();

  } catch (MalformedURLException e) {

    e.printStackTrace();

  } catch (IOException e) {

    e.printStackTrace();

  }

}
}

私はスケジューラーを使用しています、そしてここにそのコードがあります:

public class Main {
 private static boolean canStop=false;
public static void stopPHPDataChecker() {
    canStop=true;
}
public static void runnner() {
    // Setup a task for checking data and then schedule it
    PHPDataChecker pdc = new PHPDataChecker();
    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
    final ScheduledFuture<?> pdcHandle = scheduler.scheduleAtFixedRate(pdc, 0L, 10L, TimeUnit.MILLISECONDS);// Start schedule

    scheduler.schedule(new Runnable() {
       public void run() {
            System.out.println(">> TRY TO STOP!!!");
            pdcHandle.cancel(true);
            Main.stopPHPDataChecker();
            System.out.println("DONE");
        }

    }, 10L, TimeUnit.MILLISECONDS);

    do {
        if (canStop) {
            scheduler.shutdown();
        }
    } while (!canStop);

    System.out.println("END");
}

定期的にポーリングする別の2つのプログラム

RunMain.java:

public class RunMain implements Runnable {
 public void run(){
     Main m=new Main();
     m.runnner();
 }}

checkSchedule.java:

public class checkSchedule {
public static void main(String[] args) {
RunMain m = new RunMain();
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
final ScheduledFuture<?> pdcHandle = scheduler.scheduleAtFixedRate(m, 0L, 10L, TimeUnit.SECONDS);
 }
}

これはデータベースを正しくポーリングしません。コーディングに何か問題がありますか?

これは、nebeansIDEで表示される出力です。

サーバーからの出力....
{"return":"0"}
サーバーからの出力....
{"return": "0"}

やめてみてください!!!
やめよ


やめよ


やめよ


やめよ


やめよ


やめよ


やめよ


やめよ


やめよ


終了しまし

4

0 に答える 0