Когда игровая платформа создает новый экземпляр контроллера? - PullRequest
0 голосов
/ 07 августа 2020

Мой код в игровой платформе

public class MyController extends Controller {
    @Inject
    private final MyService myService;

    public Result myRequest(Http.Request request) throws InterruptedException {
        logger.info("Controler id {}", System.identityHashCode(this));
        myService.assignTemp();
        return ok();
    }
}
public class MyService {
    String temp = "temp";

    public void assignTemp() throws InterruptedException {
        temp = UUID.randomUUID().toString();
        logger.info("I generate {}", temp);
        Thread.sleep(2000);
        logger.info("I return {}", temp);
    }
}

, когда я вызываю 4 запроса одновременно. это мой журнал

2020-08-07 09:44:43 +0700 [INFO] application-akka.actor.default-dispatcher-15 - Controler id 1342212114
2020-08-07 09:44:43 +0700 [INFO] application-akka.actor.default-dispatcher-15 - I generate 45d596ca-40bc-4bbd-8d2d-494b49142133
2020-08-07 09:44:44 +0700 [INFO] application-akka.actor.default-dispatcher-17 - Controler id 1342212114
2020-08-07 09:44:44 +0700 [INFO] application-akka.actor.default-dispatcher-17 - I generate 8ec9ebf0-1571-4e03-b7b8-1f4dc2fcba67
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-16 - Controler id 1342212114
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-16 - I generate fe47949e-f8f9-44d1-8a40-f808be3b9f5d
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-15 - I return fe47949e-f8f9-44d1-8a40-f808be3b9f5d
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-22 - Controler id 1342212114
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-22 - I generate e15cb14c-9122-43a0-b024-1615655812cb
2020-08-07 09:44:46 +0700 [INFO] application-akka.actor.default-dispatcher-17 - I return e15cb14c-9122-43a0-b024-1615655812cb
2020-08-07 09:44:47 +0700 [INFO] application-akka.actor.default-dispatcher-16 - I return e15cb14c-9122-43a0-b024-1615655812cb
2020-08-07 09:44:47 +0700 [INFO] application-akka.actor.default-dispatcher-22 - I return e15cb14c-9122-43a0-b024-1615655812cb

Играть, использовать тот же экземпляр MyController для четырех потоков. Это заставляет множество вводить компонент не потокобезопасным

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

Это Воспроизвести документ о контроллере

Спасибо

1 Ответ

0 голосов
/ 14 августа 2020

Он создает экземпляр контроллера при запуске, а затем использует тот же экземпляр для всех запросов.

(при условии, что вы используете стандартную настройку Play, в которой используется Guice).

...