Получение пула соединений из запроса webhook с помощью Actions On Google - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь использовать тот же пул соединений с моей базой данных из сработавшего намерения webhook. Я использую базовый шаблон (https://github.com/actions-on-google/dialogflow-webhook-boilerplate-java).

Каждое вызванное намерение возвращает мне ActionRequest, однако оно не содержит ServletContext. Итак, как мне получить нормальный контекст запроса, используя библиотеку actions-on-google-java? (https://github.com/actions-on-google/actions-on-google-java/blob/master/src/main/kotlin/com/google/actions/api/ActionRequest.kt)


Я пытался найти альтернативные способы получения пула, но мой опыт работы с Java ограничен.

// this is what i would like to achieve but ActionRequest is limited
@ForIntent("DB test")
public ActionResponse DbTest(ActionRequest request)
{
    ...
    DataSource pool = (DataSource) request.getServletContext().getAttribute("my-pool");
    try (Connection conn = pool.getConnection()) 
    { 
        // do database stuff
    }
    ...
}

1 Ответ

0 голосов
/ 10 июля 2019

Я не вижу, чтобы ActionRequest предоставлял ServletContext, поскольку он не зависит от того, что обрабатывает запрос.

Не слишком элегантно, но вы можете создать метод в вашем MyActionsApp (поскольку вы используете базовый шаблон) для установки ServletContext из вашего запроса (HttpServletRequest) перед вызовом handleRequest.

Создайте конструктор для передачи, который также является опцией.

...