Tomcat 8 + Jersey没有显示JSP页面

时间:2014-11-27 15:46:35

标签: java jsp tomcat jersey

我正在使用Jersey作为我的REST应用程序。但是,我的一个方法必须返回一个可以是简单HTML文件的Viewable。我已经阅读了一些教程,并完成了使用JSP模板。 当我使用Jetty在本地运行时,一切都运行良好。但是,使用Tomcat 8,我得到以下异常:

  

HTTP状态500 - org.glassfish.jersey.server.ContainerException:javax.servlet.ServletException:java.lang.LinkageError:加载器约束违规:解析方法时“org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax) / servlet的/的ServletConfig)Lorg /阿帕奇/ Tomcat的/ InstanceManager;”当前类的类加载器(org / apache / jasper / servlet / JasperLoader的实例),org / apache / jsp / WEB_002dINF / jsp / confirmacao_jsp,以及方法定义的类加载器(java / net / URLClassLoader的实例) class,org / apache / jasper / runtime / InstanceManagerFactory,为签名中使用的org / apache / tomcat / InstanceManager类型提供不同的Class对象

     

输入例外报告

     

消息org.glassfish.jersey.server.ContainerException:   javax.servlet.ServletException:java.lang.LinkageError:loader   约束违规:解析方法时   “org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax / servlet的/的ServletConfig)Lorg /阿帕奇/ Tomcat的/ InstanceManager;”   类加载器(org / apache / jasper / servlet / JasperLoader的实例)   当前类的组织,org / apache / jsp / WEB_002dINF / jsp / confirmacao_jsp,   和类加载器(java / net / URLClassLoader的实例)的   方法的定义类,   org / apache / jasper / runtime / InstanceManagerFactory,有不同的Class   对象类型为org / apache / tomcat / InstanceManager中使用的   签名

     

description服务器遇到阻止它的内部错误   完成此请求。

     

例外

     

javax.servlet.ServletException:   org.glassfish.jersey.server.ContainerException:   javax.servlet.ServletException:java.lang.LinkageError:loader   约束违规:解析方法时   “org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax / servlet的/的ServletConfig)Lorg /阿帕奇/ Tomcat的/ InstanceManager;”   类加载器(org / apache / jasper / servlet / JasperLoader的实例)   当前类的组织,org / apache / jsp / WEB_002dINF / jsp / confirmacao_jsp,   和类加载器(java / net / URLClassLoader的实例)的   方法的定义类,   org / apache / jasper / runtime / InstanceManagerFactory,有不同的Class   对象类型为org / apache / tomcat / InstanceManager中使用的   签名

我的Servlet配置是:

<servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>gs.relferreira.corporativo.rest;org.codehaus.jackson.jaxrs</param-value>
        </init-param>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>gs.relferreira.corporativo.rest.RelferreiraApplication</param-value>           
        </init-param>
        <init-param>
            <param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name>
            <param-value>/WEB-INF/jsp/</param-value>
        </init-param>
        <init-param>
            <param-name>jersey.config.server.provider.classnames</param-name>
            <param-value>org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.config.servlet.filter.staticContentRegex</param-name>
            <param-value>/resources/(images|css)/. </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

返回视图的方法如下:

@GET
    @Path("confirmar/{idUsuario}/{token}")
    @Produces(MediaType.TEXT_HTML)
    public Viewable validarEmail(@PathParam("idUsuario") int idUsuario, @PathParam("token") String token){      
        if(m_Controlador.validarEmail(idUsuario, token))
            return new Viewable("/confirmacao.jsp", null);
        else 
            return new Viewable("/erro.jsp", null);
    }

0 个答案:

没有答案