0

私はGoogleアプリエンジンを使用して、JavaとRestletフレームワークを使用してソフトウェアのバックエンドを開発しています。war ディレクトリの下に index.jsp があり、誰かが私の Web サイト (example.com など) にアクセスしたときに、これをデフォルト ページとして扱いたいと考えています。そのため、web.xml のwelcome-file-list セクションで言及しました。

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

また、web.xml で Restlet サーブレットを "/*" にマップしています。

<servlet-mapping>
    <servlet-name>RestletServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

しかし、ここで問題が発生します。これは、デフォルト ページ、つまり example.com への呼び出しでさえも、明らかにそのルーターでマッピングを見つけられない restlet に送られるためです。そこで、代わりに restlet サーブレットを「/restlet/*」にマップすることにしました。

<servlet-mapping>
    <servlet-name>RestletServlet</servlet-name>
    <url-pattern>/restlet/*</url-pattern>
</servlet-mapping>

しかし、これでHTTP 404エラーが発生します。なぜなら、web.xmlが呼び出しをrestletに正常にルーティングしても、restletはこの場合、ルーターオブジェクトでマッピングを見つけられないからです。私は明らかに、restlet ルーターのマッピングを新しいパターン "restlet/*" に一致するように変更しました。

router.attach("/restlet/doSomething",DoSomething.class);

誰かがこれで私を助けることができれば、それは本当に素晴らしいことです. 以下は私の完全なweb.xmlです:

<servlet>
    <servlet-name>RestletServlet</servlet-name>
    <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
    <init-param>
        <param-name>org.restlet.application</param-name>
        <param-value>com.mWallet.loyaltyCardCase.LoyaltyCardCaseWebService
        </param-value>
    </init-param>
</servlet>

<!-- Catch all requests -->
<servlet-mapping>
    <servlet-name>RestletServlet</servlet-name>
    <url-pattern>/restlet/*</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

ありがとう!

マナス

4

2 に答える 2

2

restlet ルーターは "example.com/restlet/" をベース URL と見なすようになるため、restlet ルーターのマッピングを新しいパターン "restlet/*" に一致するように変更する必要はありません。

したがって、「/restlet/doSomething」に一致するようにルーターを変更すると、実際の URL は「example.com/restlet/restlet/doSomething」になり、明らかに機能しません。

したがって、restlet ルーティングを次のように変更します。

router.attach("/doSomething",DoSomething.class);
于 2013-04-01T07:27:38.320 に答える