Я пишу очень грубый веб-интерфейс для некоторых тестов сервера.
Мой код сервлета выглядит примерно так:
import Application.*;
@WebServlet("/runtest")
public class RunTestServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(View.runTestPageHTML());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Application.runTest();
doGet(request,response);
}
}
class View{
public static String runTestPageHTML(){
return "<html><body><form><submit value='run'></form></body></html>";
}
}
У этого есть 2 проблемы. Tomcat может и начнет новую работу, если форма будет отправлена повторно, и нет отзывов о ходе работы.
Я в основном хочу, чтобы Application.runTest() перенаправлял все на http://<server>/runtest
на logger.out и игнорировал все сообщения до завершения задания.
Ваша работа в Application.runTest(), правильно? Если runTest() является статическим методом, вы можете использовать глобальную переменную для управления одним исполнением для каждого запроса.
public class Application{
private static boolean inExecution = false;
public static void runTest(){
if(!inExecution){
inExecution = true;
//(...) yout job
inExecution = false;
}
}
}