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>

谢谢!

玛纳斯

4

2 回答 2

2

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

So, if you change the router to match "/restlet/doSomething", your actual url will be "example.com/restlet/restlet/doSomething", which obviously will not work.

So, change your restlet routing to:

router.attach("/doSomething",DoSomething.class);
于 2013-04-01T07:27:38.320 回答
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 示例可能会对您有所帮助。

于 2013-03-30T07:09:58.820 回答