当前位置: 首页 > 面试题库 >

如何从JAX-RS服务转发到JSP?

钦耀
2023-03-14
问题内容

JBoss版本:4.2.3GA。这在apache tomcat
6.0中有效。在JBoss中,我必须添加以下设置:-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=false要继续工作,但是现在当我加载页面时,出现以下错误。感觉我正在以JBoss不喜欢的方式执行此操作,但是我还没有看到其他示例。有谁知道让它正常工作的方法?

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);
}


 类似资料:
  • 问题内容: 我正在使用JAX-RS的Jersey实现。我想将JSON对象发布到该服务,但收到错误代码415不支持的媒体类型。我想念什么? 这是我的代码: 这是Order对象: 这样的GET请求可以完美地工作,并以JSON格式返回订单: 但是,像这样的POST请求返回415: 问题答案: 答案非常简单。我必须在请求中添加标头,其值为。没有此标头,Jersey不知道如何处理请求正文(尽管有注释)!

  • 问题内容: 是否可以将JAX-RS Web服务重定向到另一个网页? 就像您使用Servlet一样。 JAX-RS Web服务本身应该重定向。如果相关,我正在使用RESTEasy。 问题答案: 是的,如果您的返回类型是(或) https://eclipse- ee4j.github.io/jersey.github.io/apidocs/1.19.1 ,则可以在Jersey或任何JAX- RS实现(

  • 我对使用jersey jetty glassfish之类的web服务器/应用程序/servlet感到困惑。还有web.xml文件?什么?ResourceConfig只接受类,而不接受它们的实例。一切似乎都是那么的一团糟。 我怎么能就这样做类似的事情呢?

  • 泽西-客户端 泽西-普通 jersey-container-servlet jersey-container-servlet-core 泽西-服务器 如果我这样做,我总是得到以下异常: 经过一些研究,我发现我应该添加jersey-servlet-1.12.jar,而不是从上面发布的下载源添加jar。所以我做了。我将其添加到web.xml中

  • 问题内容: 我正在尝试向一些Web服务调用中添加一些响应标头。我使用CXF 2.1.2和JAX- RS编写了Web服务。我需要返回一个对象,我还想向Response添加一些标头。 在不返回javax.ws.rs.core.Response对象的情况下 ,如何在响应中添加标头并仍然返回javabean? 问题答案: 您可以通过Web服务中的@Context注释注入对实际HttpServletResp

  • 你好,我曾与JAX-WS合作开发基于SOAP的网络服务。现在我想使用REST,因为正如我从这里学习的那样,REST比SOAP有优势。 但从不同的文章中,我知道我们也可以从JAX-WS创建RESTful Web服务。但是大多数人说我们应该使用JAX-RS而不是JAX-WS。 我的问题是JAX-WS RESTful webservice和JAX-RS(泽西)之间有什么区别。JAX-RS相对于JAX-W

  • 问题内容: 我正在使用Jersey JAX- RS客户端(2.0版)。我知道它正在使用Jackson的ObjectMapper生成和解析JSON。我想使用同一对象为某些Java类生成JSON,以便可以将它们写入日志。 我知道我可以创建一个ObjectMapper的新实例,但是我希望请求Jersey Client给我一个有关它正在使用的实例的引用。我怎样才能做到这一点?Jersey 2.0知道Jac

  • 我正在开发一个安全的web应用程序,它可以进行金融交易,并在其中使用spring。哪个更适合用于安全性、JAX-RS服务或SpringREST服务?我考虑使用spring,因为我们已经在应用程序中使用它了,如果它提供了功能,那么为什么要使用JAX-RS,但正如我所说的,它是一个高度安全的web应用程序,人们将在其中购买东西并进行金融交易,所以我必须看看哪个更适合使用。 我看了下面的博客还是有点困惑