JBoss版本:4.2.3GA。这在apache tomcat 6.0中有效。在JBoss中,我必须添加以下设置:-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=false要继续工作,但是现在当我加载页面时,出现以下错误。感觉我正在以JBoss不喜欢的方式执行此操作,但是我还没有看到其他示例。有谁知道让它正常工作的方法?
-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=false
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; ... @GET @Path("/forward") public String forward( @Context final HttpServletRequest request, @Context final HttpServletResponse response) throws Exception { RequestDispatcher dispatcher = request.getRequestDispatcher("/index.html"); dispatcher.forward(request, response); return ""; }
例外:
java.lang.ClassCastException: $Proxy114 cannot be cast to javax.servlet.ServletRequestWrapper com.itt.scout.server.servlet.admin.config.ConfigController.forward(ConfigController.java:46) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$VoidOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:151) com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:70) com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:279) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136) com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:86) com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136) com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1357) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1289) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1239) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:497) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:684) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
从另一个位置获得帮助后,我意识到我正在以一种有趣的方式连接我的JSP和restlet,而我真正想做的就是使用Viewable。这在JBoss中也更好。这是我最后得到的摘要:
import javax.ws.rs.core.Context; import javax.ws.rs.Path; import javax.ws.rs.GET; import com.sun.jersey.api.view.Viewable; @GET @Path("/index") public Viewable index( @Context HttpServletRequest request, @Context HttpServletResponse response) throws Exception { request.setAttribute("key", "value"); return new Viewable("/jsps/someJsp.jsp", null); }