我是Restlets的新手。尝试配置web.xml(在JBoss上)。我有2个条目,一个用于servlet(与webservices无关),另一个用于webservices,使用Restlet。这是条目..
<servlet>
<servlet-name>AuthenticationServlet</servlet-name>
<servlet-class>com.safeid.web.server.api.servlet.AuthenticationServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AuthenticationServlet</servlet-name>
<url-pattern>/authenticate/*</url-pattern>
</servlet-mapping>
<!-- Start of Entries for the REST Web Services. -->
<context-param>
<param-name>org.restlet.application</param-name>
<param-value>com.safeid.web.server.SafeIDRouterApplication</param-value>
</context-param>
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>com.noelios.restlet.ext.servlet.ServerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!-- END of Entries for the REST Web Services.-->
两者都不能一起工作。在上面的设置中,Restlet可以工作。但是当我改变
时RestletServlet / *
类似
<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/credential/*</url-pattern>
</servlet-mapping>
Restlet停止工作,AuthenticationServlet工作正常。我在这里缺少什么?
答案 0 :(得分:3)
我有类似的沮丧。也许我发现的可能有所帮助。
我的Application类中的路由器条目如下:
router.attach("/users", UsersResource.class);
当我的servlet映射是这样的时候,事情很好:
<servlet-mapping>
<servlet-name>Sandbox</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
当我把它改成这样的东西时:
<servlet-mapping>
<servlet-name>Sandbox</servlet-name>
<url-pattern>/users/*</url-pattern>
</servlet-mapping>
它停止了工作。
问题是servlet容器“使用”或删除匹配的URL部分。在这种情况下,它会删除“/ users”。所以如果你使用这样的网址:
http://www.mywebsite.com/users
您必须将其更改为:
http://www.mywebsite.com/users/users
当然,您可以将url-pattern设为您想要的任何内容:
<servlet-mapping>
<servlet-name>Sandbox</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
然后您可以像这样访问它:
http://www.mywebsite.com/rest/users
url-pattern被剥离,你可以在Application类中获得剩余的东西,用于你自己的路由目的。
HTH
答案 1 :(得分:1)
看起来你错过了init-params,如下例所示。
<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>my.class.that.extends.Application.MyApplication</param-value>
</init-param>
</servlet>
你需要一个扩展org.restlet.Application的类(至少在Restlet 2.0中)。