2017-08-31 10 views
0

私は現在、このセットアップを持っています他のサーバー。、全体他のサーバー上のJavaに信号を送る

誰かがhtml(サーバー1)のボタンを押すと、Javaの機能が呼び出されます(サーバー2で)。
これを行う方法はありますか?

EDIT:これはおそらく、ブラウザがリクエストを送信できないようにする必要がありbecouse、PHPで行く必要
...

+1

短答:はい。長い答え:それはあなたが使用している技術/フレームワークのような、より詳細な情報に依存します。サーバに静的/動的IP、ドメイン名などがある場合... –

+0

onClickハンドラのXmlHttpRequest。 AKA "AJAX" –

+0

あなたの返信ありがとう@ManuelM。 ! サイト上でMySQL、HTML、JavaScript、およびPhPを使用できます。 そして、VPS上でプラグインを実行しているBukkitサーバ。 これを行う最善の方法は何ですか? –

答えて

0

私は与えられた情報をできる限り説明するような答えを与えることを試みます。

一般的に、これは送信側のサーバーA(サイト)、受信側のサーバーB(Bukkit)の2つの部分で構成されています。

この2つは、互いに通信する方法についての交渉が必要です。これは、例えば、可能性があります。 RESTまたはSOAPを介したWebServices、または独自に設計されたプロトコルを使用したソケット。

どちらのマシンも、互いに接続する必要があります。インターネット接続。

我々は例のプロトコルとしてRESTを経由してWebサービスを取れば、我々は、サーバーA上のindex.phpファイルにいくつかのコードで記述する必要があります:

<html> 
    <body> 
     <form action="index.php" method="post"> 
      <input type="submit" name="submit" value="Do action on remote server" /> 
     </form> 
    </body> 
</html> 

<?php 
function callRest($method, $url, $data = false) { 
    $curl = curl_init(); 

    switch ($method) { 
     case "POST": 
      curl_setopt($curl, CURLOPT_POST, 1); 

      if ($data) 
       curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
      break; 
     case "PUT": 
      curl_setopt($curl, CURLOPT_PUT, 1); 
      break; 
     default: 
      if ($data) 
       $url = sprintf("%s?%s", $url, http_build_query($data)); 
    } 

    // Optional Authentication: 
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($curl, CURLOPT_USERPWD, "username:password"); 

    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

    $result = curl_exec($curl); 

    curl_close($curl); 

    return $result; 
} 

if (isset($_POST['submit']) { 
    callRest("POST", "http://my.remote-server.com/rest/do-something"); 
} 

?> 

これは、リモートサーバーを呼び出します。サーバーBでRESTサーバーを実行している場合(リスニング/休憩/ do-something)、呼び出しを受け取り、必要なJava関数を呼び出すことができます。

関連する問題