使用App引擎配置Restlet

时间:2013-03-29 14:34:51

标签: java google-app-engine web.xml restlet restlet-2.0

我正在使用谷歌应用引擎使用java和Restlet框架开发我的软件的后端。我的war目录下有index.jsp,当有人访问我的网站时,我想将其视为默认页面(例如example.com)。所以我在web.xml的welcome-file-list部分提到了它。

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

另外,我将我的Restlet servlet映射到web.xml中的“/ *”。

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

但问题出现在这里,因为即使是对默认页面的调用,例如example.com,也会转到restlet,显然在路由器中找不到映射。所以我决定将restlet servlet映射到“/ 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>

谢谢!

马纳斯

2 个答案:

答案 0 :(得分:2)

您不需要更改restlet路由器中的映射以匹配新模式“restlet / *”,因为restlet路由器现在将“example.com/restlet/”视为基本URL。

所以,如果你改变路由器以匹配“/ restlet / doSomething”,你的实际网址将是“example.com/restlet/restlet/doSomething”,这显然是行不通的。

因此,请将您的restlet路由更改为:

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

答案 1 :(得分:0)

我在我的项目及其工作中做到了。 我认为你忘了在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.wa.gwtamazon.server.RestApi</param-value>
 </init-param>

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

我已在此链接中回答Restlet API example可能会对您有帮助。