Может ли Wicket обрабатывать два запроса с одной и той же страницы в одном сеансе одновременно? - PullRequest
0 голосов
/ 14 июля 2010

Когда я нажимаю на ссылку 1, а затем, до получения ответа, нажимаю на ссылку 2 на той же странице, я получаю сообщение об ошибке «Страница истекла» от Wicket. Способен ли Wicket концептуально выполнять такую ​​параллельную обработку?

Есть идеи, почему Wicket теряет сессию (хотя, похоже, она находится на tomcat)?

1 Ответ

2 голосов
/ 14 июля 2010

Чтобы ответить на вопрос сам: похоже, у Wicket нет проблем с обработкой второго клика по ссылке, пока первый еще обрабатывается.Я попробовал это на следующем примере.

import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

public class ConcurrentClickPage extends WebPage {

    public ConcurrentClickPage() {
        final IModel<String> model = new Model<String>("initial");
        Label status = new Label("status", model);
        add(status);
        add(new Link("link1"){
            @Override
            public void onClick() {
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(ConcurrentClickPage.class.getName()).log(Level.SEVERE, null, ex);
                }
                model.setObject("link 1 clicked");
            }
        });
        add(new Link("link2"){
            @Override
            public void onClick() {
                model.setObject("link 2 clicked");
            }
        });
    }

}

и соответствующая html-страница:

<html>
  <body>
      <span wicket:id="status">text</span>
      <p>
          <a href="#" wicket:id="link1">Link 1 (deferred processing)</a><br/>
          <a href="#" wicket:id="link2">Link 2</a>
      </p>
  </body>
</html>

Когда я нажимаю на ссылку 1 и нажимаю на ссылку 2, ожидая ответа по ссылке1, все в порядке, и я не получаю ошибку "срок действия страницы истек".

...