NetBeans上のサーバーに使用するRESTful Webサービスがあります。 このウェブサービスは、クライアントから多くのリクエストを受けるべきです(マルチプレイヤーゲーム)。RESTfulなWebサービスでwait()を使用できますか?
私はまだこのトピックに慣れていませんが、クライアントからWebサービスへのすべての呼び出しがスレッドセーフであることを理解していれば、Webサービスへのすべての接続が別のスレッドにあります。 Webサービスメソッド)これは本当ですか?
これは私の質問に私をもたらします: wait();
をウェブサービスの方法で使用できますか?私は2つのクライアント接続を待っているとしましょう、2番目の接続が使用されますnotifyAll();
しかし、Webサービスは本当にスレッドではないので、私はそこにこれらのメソッドを使用することが可能かどうかわからない?代わりに私は何を使うべきですか?
これは私のWebサービスです。
@Path("/w")
public class JSONRESTService {
String returned;
@POST
@Consumes("application/json")
@Path("/JSONService")
public String JSONREST(InputStream incomingData) {
StringBuilder JSONBuilder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(incomingData));
String line = null;
while ((line = in.readLine()) != null) {
JSONBuilder.append(line);
}
returned = "transfer was completed";
// This is what I'm trying to add but I know that I can't:
// count is a static variable, every new connection will increase this value
// only one player is connected
if (Utility.count == 1)
wait(); //wait for a 2nd player to connect to this webservice
// 2nd player is connected to this webservice
if (Utility.count == 2)
notifyAll(); // notify the 1st player
} catch (Exception e) {
System.out.println ("Error Parsing: - ");
returned ="error";
}
System.out.println ("Data Received: " + JSONBuilder.toString());
return (returned);
}
}
クライアント:
JSONObject jsonObject = new JSONObject("string");
// Step2: Now pass JSON File Data to REST Service
try {
URL url = new URL("http://localhost:8080/w/JSONService");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/json");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write(jsonObject.toString());
out.close();
//string answer from server:
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line="";
while ((line = in.readLine()) != null) {
sb.append(line);
System.out.println("\n"+line);
in.close();
} catch (Exception e) {
System.out.println("\nError while calling JSON REST Service");
System.out.println(e);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
} } }`
をアップノック少し例を使用します。 'if(Utility.count == 1)'は 'if(Utility.count == 1)'でなければなりません。 2番目のポイント、2番目の 'if'は' else if'です。 –
ありがとう!はい私はアイデアとしてそれを書いた、私の問題は、webserviceでwait()とnotify()です。 – SHAI
コードについて忘れてください、具体的に何を達成したいですか? –