gesetzt ich einen Android-App, die eine Anfrage an den Server über Volley sendet:Session Timeout nach 5 Minuten, obwohl die Session-Timeout-Parameter auf 30
private void waitForForfeit(final String user_id, final String accessToken) {
String url = "";
RequestQueue queue = Volley.newRequestQueue(activity);
try {
url = "https://www.chiaramail.com:443/GameServer/GameServer?user_ID=" + URLEncoder.encode(user_id, "UTF-8") + "&token=" + URLEncoder.encode(accessToken, "UTF-8") + "&cmd=" + URLEncoder.encode("WAITFOR FORFEIT ", "UTF-8") + "&parms=" + URLEncoder.encode(user_id, "UTF-8");
} catch (UnsupportedEncodingException e) {
Toast.makeText(activity, getString(R.string.wait_forfeit_error) + e.getMessage(), Toast.LENGTH_LONG).show();
spinner.setVisibility(View.INVISIBLE);
waitForForfeit(user_id, accessToken);
}
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (!response.startsWith("41 ")) {
queue_builder.setMessage(getString(R.string.wait_forfeit_error) + " " + response);
queue_alert = queue_builder.create();
queue_alert.show();
} else {
forfeitAlert.show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
volleyError = error;
Toast.makeText(activity, getString(R.string.wait_forfeit_error) + volleyError.getMessage(), Toast.LENGTH_LONG).show();
waitForForfeit(user_id, accessToken);
}
});
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
60*1000*60,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
// Add the request to the RequestQueue.
queue.add(stringRequest);
}
Ich habe, dass die Anfrage bestätigt wird vom Server korrekt empfangen und verarbeitet. Die Anforderung wurde so konzipiert, dass sie nur zurückgegeben wird, wenn ein bestimmtes Ereignis aufgetreten ist (eine andere Anwendung sendet eine Anforderung, die dazu führt, dass der Server eine "41" -Antwort zurückgibt), und diese wird ordnungsgemäß ausgeführt.
Das Problem ist, dass, wenn die zweite App ihre Anfrage nicht innerhalb von 5 Minuten sendet, dann die erste App einen VolleyError erlebt. Dies ist, auch wenn die Session-Timeout auf 30 Minuten festgelegt ist:
<session-config>
<session-timeout>
60
</session-timeout>
</session-config>
Wer hier eine Ahnung, warum dies geschieht? Ich habe für fünf Minuten in Tomcat gegoogelt und konnte nichts finden. Ich grepped auch die Server Config-Dateien, auf der Suche nach 300000, 300 und 600 (fünf Minuten in ms, Sekunden und Minuten) und es war nichts mit einem dieser Werte konfiguriert. Was vermisse ich? Ich habe fast eine Woche damit verbracht und es wird langsam alt.