2011-12-29 18 views
2

url-patternで簡単に作業しようとしていますが、localhostではうまく動作しますが、アプリケーションがGAEサーバーにデプロイされているときには失敗します。 私は何をしたいの横にある:Google App EngineのサーブレットURLパターン

  • 1つのサーブレットは、すべての要求を提供するために

は私がきたこれを行うには(ほとんどの場合)ファイルをJSPにいくつかの要求を転送します。このサーブレットweb.xmlのを設定した:

<servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>com.mycompany.MyServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>MyServlet</servlet-name> 
    <url-pattern>/MyServlet</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>MyServlet</welcome-file> 
</welcome-file-list> 

これは、GAEのローカルホストサーバと正常に動作しますが、アプリは、実際のGAEのサーバーにデプロイされている場合、それはしていません。問題は、myapp.appspot.com/anythingにアクセスしたときにGAEが応答する点です。

エラー:見つからない 要求されたURL /その他はこのサーバー上に見つかりませんでした。

誰でも私を助けることができます、plese?

+0

申し訳ありませんが、コードはよく表示されていません。まずサーブレット宣言を "MyServlet"として指定する必要があります。 – Marto

答えて

1

Servlet要素がありません。 Servlet-mapping要素だけでは十分ではありません。 ....これを試してみてください、あなたのweb.xmlのオフもちろん

<servlet> 
      <servlet-name>MyServlet</servlet-name> 
      <servlet-class>package.path.to.my.servlet.MyServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
      <servlet-name>MyServlet</servlet-name> 
      <url-pattern>/MyServlet</url-pattern> 
    </servlet-mapping> 

を構築するあなたのMyServletクラスの実際のパッケージとpackage.path.to.my.servletを交換します。これを行うと、複数のサーブレットマッピング要素を配置して、異なるURLを同じサーブレットにマップできます。

これはあなたのappspotのURLで起こっている場合は、試してみて、あなたの静的ファイルのすべてがあなたのappspotに展開されていることを確認することができます...

<static-files> 
     <include path="/**.css" /> 
     <include path="/**.xml" /> 
    </static-files> 

ただ、これはあなたがすべて導入していることに注意あなたのwarファイル内のxmls/cssファイル。そうしたくない場合は、インクルードパス属性をそれに応じて調整してください。また

、このパターンを使用しているときだけ、次のURLパターンを使用して...

<url-pattern>/*</url-pattern> 

はちょうどあなたが画像/ cssファイル/ JSPファイルを持っている場合があることに注意してください、すべての要求は、1つのサーブレットに行く持っています/ etcこのサーブレットがそれらの要求をインターセプトすることを示します。だから、興味のないリクエストを転送するようなロジックを持たなければならないでしょう。これはまっすぐなことをやっているなら十分でしょう。もっと複雑になる(例えば、cssファイルや画像ファイルをキャッシュする)場合、おそらく静的なリソースフィルタを追加したいと思うでしょう。

+0

ありがとうございました。コードを投稿するのは間違いでしたが、サーブレットタグはすでにweb.xmlにあります。実際には、これはlocalhost ...でもうまくいきます。: – Marto

+0

その場合は、完全なweb.xml、完全なスタックトレースを含めるように答えを更新する必要があります( 'https://appengine.google。 com/dashboard?&app_id = s〜YOUR-APPSPOT-SUBDOMAIN'ここで 'YOUR-APPSPOT-SUBDOMAIN'は' YOUR-APPSPOT-SUBDOMAIN.appspot.com'からのもので、右下のエラーセクションにあるはずです)。 – Dave

+0

また、あなたのweb xmlが正しくアップロードされていない可能性があります。あなたがappengine-web.xmlを調整し、まだ説明がない場合はstatic-files要素を追加することで確認できます。 – Dave