Использование app.yaml в Google AppEngine - PullRequest
2 голосов
/ 19 ноября 2010

Я запускаю приложение Java на AppEngine и хочу использовать app.yaml.Я прочитал документы и создал приложение app.yaml в папке WEB-INF со следующим содержимым

application: myprojectname
version: 1
runtime: java
api_version: 1

welcome_files:
  - index.jsp
  - index.html

handlers:
- url: /oblivion/*
  servlet: myprojectname.CronUpdater

Где myprojectname - это имя проекта.

Однако, когда я получаю доступ к localhost: 8888 / oblivion Или localhost: 8888 / oblivion / я получаю

HTTP ОШИБКУ 404

Проблема доступа / забвения.Причина:

NOT_FOUND

В чем может быть причина?

Это структура каталога (усеченная)

pratik@pratik-desktop:~/workspace/myprojectname/war$ ls -LR
index.html  index.jsp  WEB-INF

./WEB-INF:
appengine-generated  app.yaml  cron.yaml  logging.properties
appengine-web.xml    classes   lib        web.xml

...

Ответы [ 2 ]

4 голосов
/ 20 февраля 2017

В appengine есть два типа среды (на данный момент):

  • Гибкая среда
  • Стандартная среда

Вы не можете использоватьappengine-web.xml и app.yaml одновременно:

  • Гибкая среда используйте app.yaml для настройки всех вещей, которые необходимо знать приложению
  • Стандартное окружение использование appengine-web.xml и logging.properties

Здесь я предполагаю, что вы хотите использовать appengine в режиме Flexible Environment .Обычно app.yaml находится в папке appengine, прямо внутри вашей папки main.

Из Документа Google Cloud Platform вы должны иметь:

myprojectname/
 [pom.xml]         (optional, only if you use maven)
 [build.gradle]    (optional, only if you use gradle)
 [index.yaml]      (optional, only if you use cloud datastore)
 [cron.yaml]       (optional, only if you use cron job)
 [dispatch.yaml]   (optional, only if you route to services)
 src/main/
   appengine/
     app.yaml
   java/
     com.example.mycode/
       MyCode.java
   webapp/
     [index.html]
     [index.jsp]
     WEB-INF/
       [web.xml]

И последнее: обработчики должны быть определены в файле web.xmlapp.yaml у вас должно быть просто:

handlers:
  - url: /.*
    script: this field is required, but ignored

и в вашем web.xml что-то вроде этого:

<servlet>
    <servlet>
      <servlet-name>CronUpdater</servlet-name>
      <servlet-path>myprojectname.CronUpdater</servlet-path>
    </servlet>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CronUpdater</servlet-name>
    <url-pattern>/oblivion/*</url-pattern>
</servlet-mapping>

Надеюсь, это поможет!

2 голосов
/ 19 ноября 2010

Вместо использования myprojectname.CronUpdater вам нужно перечислить полный пакет и класс сервлета.Так что, если CronUpdater находится в пакете

com.mycompany.servlets

, вам нужно поместить

servlet: com.mycompany.servlets.CronUpdater

в ваш app.yaml

...