2010-11-19 25 views
2

AppEngine üzerinde bir Java uygulaması çalıştırıyorum ve app.yaml'yi kullanmak istiyorum. Ben dokümanlar okumak ve myprojectname projenin adıdır aşağıdaki içerikleriGoogle AppEngine uygulamasında app.yaml kullanma

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

welcome_files: 
    - index.jsp 
    - index.html 

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

ile WEB-INF klasörünün içindeki bir app.yaml app oluşturduk.

Ancak localhost erişirken: 8888/unutuluş Veya localhost: 8888/unutma/Ben

HTTP Hatası 404

erişim sorunu/af olsun. Nedeni:

NOT_FOUND 

Sebep ne olabilir?

Bu

yerine myprojectname.CronUpdater kullanmanın

[email protected]:~/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 

... 
+0

Ayrıca 'api_version: 1' satırında –

cevap

2

(kesik) dizinin yapısı, sen servlet'ten tam paket ve sınıf liste gerekir. CronUpdater paketinin

com.mycompany.servlets

ise size app.yaml içinde

servlet: com.mycompany.servlets.CronUpdater

koymak gerekir Yani. AppEngine'de olarak

+0

satırına da ihtiyacınız yok. Çalıştır -> Çalıştır'ı Kullanma ... derler, sanki .yaml dosyasını yoksayar. – user513590

+1

Tabii ki, derler, javac app.yml dosyası hakkında hiçbir fikri yok. Servletin tam nitelikli sınıf adını koymanız gerekir veya kapsayıcı kodunuzu bulamaz. – fedesilva

2

, iki çevre tipi (itibarıyla şimdi) vardır:

  • Esnek Çevre
  • Standart Çevre
Aynı anda appengine-web.xml ve app.yaml kullanamazsınız

:

  • Esnek ortamlar
  • Standart çevreyi kullanımı Burada appengine-web.xml ve logging.properties

Sana 'Esnek Çevre' modunda AppEngine'i kullanmak istediğiniz varsayalım bilmek gerekir AppEngine'de her şeyi yapılandırmak için kullanımını app.yaml ment. Genellikle, app.yaml, main klasörünüzün içinde, appengine klasöründe bulunur. Google Cloud Platform doc itibaren

, sen sahip olmalıdır:

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] 

Son bir şey: işleyicileri web.xml dosyasında tanımlanmalıdır.app.yaml olarak, sadece sahip olmalıdır: Böyle

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

ve web.xml şey: Bu yardımcı olur

<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> 

Umut!

İlgili konular