当前位置: 首页 > 知识库问答 >
问题:

Tomcat服务器将不会使用筛选器启动

诸福
2023-03-14

这是web.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"   
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Projeto_joas</display-name>

<resource-ref>
<res-ref-name>jdbc/DiaDiaDev</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


<servlet>
<display-name>FacesServlet</display-name>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
 </context-param>


<context-param>
  <param-name>com.sun.faces.expressionFactory</param-name>
     <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>


<!-- <filter> -->

<!--<filter-name>FilterHibernate</filter-name> -->
<!--<filter-class>util.filter.ConexaoHibernateFilter</filter-class> -->
<!--</filter> -->

<!--<filter-mapping> -->
<!-- <filter-name>FilterHibernate</filter-name> -->
<!--<url-pattern>*.jsf</url-pattern> -->

<!--</filter-mapping> -->
</web-app>

服务器以这种方式运行得很好,如果我删除过滤器上的注释,它将无法启动,并会抛出那些异常:

严重:子容器在启动Java . util . concurrent . execution exception时失败:org . Apache . Catalina . life cycle异常:无法启动组件[StandardEngine[Catalina]。StandardHost[localhost]]原因:org . Apache . Catalina . life cycle异常:无法启动组件[StandardEngine[Catalina]。StandardHost[localhost]]的原因是:org . Apache . catalina . life cycle异常:子容器在启动过程中失败

警告:无法检索容器 [标准引擎 [卡塔利娜] 的 JNDI 命名上下文。标准主机[本地主机]。标准上下文 [/Projeto_joas]],因此没有对该容器 javax.naming.命名执行任何清理异常:没有绑定到此类装入器的命名上下文

过滤器类:

package util.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.hibernate.SessionFactory;

import util.HibernateUtil;

public class ConexaoHibernateFilter implements Filter {

    private SessionFactory sf;

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        this.sf = HibernateUtil.getSessionFactory();

    }




    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
            FilterChain chain) throws IOException, ServletException {

        try {

            this.sf.getCurrentSession().beginTransaction();
            chain.doFilter(servletRequest, servletResponse);
            this.sf.getCurrentSession().getTransaction().commit();
            this.sf.getCurrentSession().close();

        } catch (Throwable ex) {
            try {
                if (this.sf.getCurrentSession().getTransaction().isActive()) {
                    this.sf.getCurrentSession().getTransaction().rollback();
                }
            } catch (Throwable t) {
                t.printStackTrace();
            }
            throw new ServletException(ex);
        }

    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

}

共有1个答案

胡玉书
2023-03-14

对我来说,同样的错误也来了。我犯的错误是我没有添加任何要销毁和初始化的方法。所以对我来说,它只是在销毁和初始化方法的主体中添加了一些打印语句。

@Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        pw.println("Error 404 bad request");
        // chain.doFilter(request, response);
    }

    @Override
    public void destroy() {
        System.out.println("destroyed"); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("initilized"); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
    }
 类似资料:
  • 我正在尝试将Spring Boot应用程序作为WAR部署到tomcat服务器。我可以很好地构建war并将其部署到tomcat服务器。但是,当我启动服务器时,我的spring应用程序从未运行。服务器启动得很好。Spring要我做的我都做了, http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-creat

  • 我正在通过启用Java EE的Eclipse运行tomcat,每当我试图启动服务器时,就会出现以下错误,我无法运行任何servlet, 我的web.xml如下所示

  • 我在Windows上使用eclipse,目前在一个Tomcat6.0实例上部署了两个不同的服务器。这管用。它们的设置使其端口不重合。我有一个Tomcat7.0实例,它也可以启动。同样,端口不重合。 我正在尝试启动一个Tomcat8.0实例,而这个实例正与我作斗争。 在我看来,我已经指定了我应该使用您在上面看到的端口,8015、8019和1090。然而,日志信息(在尝试通过运行server.bat启

  • 运行Spring Boot应用程序时,嵌入式tomcat服务器无法启动。我刚刚在pom.xml中添加了所需的依赖项,并创建了一个简单的java POJO类。应用程序属性已经按照oracle数据库所需的jdbc配置以及Hibernate方言信息进行了设置。 执行mvn spring-boot:run时的控制台日志

  • 我的XAMPP服务器有问题。我可以毫无问题地启动Apache、FileZilla和其他所有东西,但当我尝试启动MySQL时,它只是说 尝试启动MySQL服务... 它永远都是这样,就像被冻了一样。 有什么好办法吗?

  • 我有一个建立在Spring启动基础上的后端,然后我学校的一些定制代码建立在这个基础上。前端是纯粹的角度应用程序,我从不同的服务器上通过一大口服务提供。他们只通过REST调用连接。 后端已经运行了一个身份验证模块,现在我需要从后端运行的同一tomcat服务器为这个角应用程序提供服务,这样它也可以使用这个身份验证模块。 我发现这是关于多个连接器的,所以我将其复制为以下类来设置多个连接器: 问题是我没有