doGet вызывается несколько раз во время инициализации [duplicate]

Извините, но я не могу опубликовать комментарий к вашему вопросу выше из-за отсутствия репутации, поэтому я включу его в этот ответ.

Сделайте, как указано выше, создав подписанный Url, но вместо используя service-account.json. Я думаю, вам нужно использовать serviceAccountKey.json, который вы можете создать (замените YOURPROJECTID соответственно)

https://console.firebase.google.com/project / YOURPROJECTID / settings / servicesaccounts / adminsdk

Пример:

const gcs = require('@google-cloud/storage')({keyFilename: 'serviceAccountKey.json'});
// ...
const bucket = gcs.bucket(bucket);
// ...
return bucket.upload(tempLocalFile, {
        destination: filePath,
        metadata: {
          contentType: 'image/jpeg'
        }
      })
      .then((data) => {
        let file = data[0]
        file.getSignedUrl({
          action: 'read',
          expires: '03-17-2025'
        }, function(err, url) {
          if (err) {
            console.error(err);
            return;
          }

          // handle url 
        })

1
задан BalusC 27 June 2015 в 19:58
поделиться

2 ответа

Tomcat «проверит» корневой URL-адрес веб-приложения, чтобы проверить, успешно ли он развернут. Если вы используете IDE для управления сервером, он может выполнять дополнительные проверки. Однако действительно странно, что он вызывается три раза, а не один или, возможно, два раза.

Что получается?

@WebServlet(
    name = "IndexServlet",
    urlPatterns={ "/", "/home" },
    initParams = { @WebInitParam(name = "sortBy", value = Constants.POPULAR) })

При явном сопоставлении его по шаблону URL-адреса / вы сделали его сервлетом по умолчанию для веб-приложения! Каждый отдельный запрос, который не соответствует шаблону URL-адреса любого явно зарегистрированного сервлета, попадет в этот сервлет. Обычно это те запросы, которые попадают в статические ресурсы, такие как CSS, JS и файлы изображений. Как правило, servletcontainer уже предоставляет сервлет по умолчанию из коробки. Tomcat, например, имеет DefaultServlet для самой цели.

Итак, представьте, что файл index.jsp, в свою очередь, ссылается на CSS и JS-файл, затем один запрос на /home три раза вызовет сервлет (и браузер будет для этого CSS и JS-файла получить неуничтомый вывод HTML из index.jsp вместо желаемого вывода CSS и JS).

Избавиться шаблона URL /. Это неправильный способ получения сервлета «домашней страницы». Вместо этого добавьте <welcome-file>home</welcome-file> в web.xml. Не принимайте задание сервлета по умолчанию из контейнера, если вы действительно не знаете, что делаете.

См. также:

3
ответ дан Community 23 August 2018 в 17:07
поделиться

Я думаю, это может произойти, потому что вы запускаете свой сервер из IDEA или Eclipse, который проверяет, хорошо ли ваше развертывание или нет. Я согласен с ответом Ульриха, вы должны вызвать URL-адрес, используя curl или wget. И попробуйте запустить сервер не из IDE (если есть).

1
ответ дан david.lucky 23 August 2018 в 17:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: