您的位置:首页 > 其它

web应用的入口:web.xml核心配置文件详解

2016-09-29 05:17 597 查看
前言:如果要了解web项目的底层实现,web.xml配置文件,是必须要掌握的。web.xml配置文件,是web项目的核心,web项目的启动,从这里开始。

为了方便大家理解,我们从最常见的配置开始着手来说明。

一,contextConfigLocation

contextConfigLocation用来配置自定义的配置文件的加载路径,如果指定了contextConfigLocation,当web项目启动时,首先会去加载这个路径下

的配置文件。这个功能,常见的用途,就是在配置文件内容很多时,为了便于管理和阅读,分解配置文件到不同的文件中。例如我们通常的做法,

将servce相关的bean配置在单独的application-service.xml中,将DAO相关的bean配置在单独的application-dao.xml中。用法如下:

<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:/my.xml</param-value>

</context-param>

    如果有多个配置文件,不同的配置文件之间,可以在<param-value>标签中,用逗号隔开。这里还有一点需要说明的是,

contextConfigLocation的作用是自定义配置文件的加载路径,默认情况下,系统会去/WEB-INF目录下,加载applicationContext.xml这个文件,

一旦配置了contextConfigLocation,ContextLoader就会去我们指定的路径下去加载配置文件。如下:

<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>my.xml,you.xml,he.xml</param-value>

</context-param>

二,org.springframework.web.filter.CharacterEncodingFilter

1,CharacterEncodingFilter过滤器的作用

    CharacterEncodingFilter是Spring框架提供的字符编码过滤器,很容易猜到,CharacterEncodingFilter的作用就是解决项目中的编码问题,

编码问题是项目中经常会遇到的一个问题,Spring提供了一种更优雅的解决方法,从全局的角度,来处理HTTP请求的编码问题。我们只需要在

web.xml文件中进行CharacterEncodingFilter配置,就可以解决项目中的中文乱码问题。

2,CharacterEncodingFilter过滤器的使用方法

    在web.xml配置文件中,进行一个filter的配置即可,encodingFilter用来指定过滤器类,这里使用的就是CharacterEncodingFilter;encoding

用来指定编码方式,我们一般都会设置成UTF-8;forceEncoding用来确保,不管是否指定了编码方式,都强制使用encoding配置的编码方式。

    示例代码如下:

    <filter>

        <filter-name>encodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

        <init-param>

            <param-name>forceEncoding</param-name>

            <param-value>true</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>encodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

3,CharacterEncodingFilter源代码

package org.springframework.web.filter;

import java.io.IOException;

import javax.servlet.FilterChain;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class CharacterEncodingFilter extends OncePerRequestFilter{

    private String encoding;

    private boolean forceEncoding;

    public CharacterEncodingFilter(){

        this.forceEncoding = false;

    }

    public void setEncoding(String encoding){

        this.encoding = encoding;

    }

    public void setForceEncoding(boolean forceEncoding){

        this.forceEncoding = forceEncoding;

    }

    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)

      throws ServletException, IOException{

      if ((this.encoding != null) && (((this.forceEncoding) || (request.getCharacterEncoding() == null)))) {

          request.setCharacterEncoding(this.encoding);

          if (this.forceEncoding) {

              response.setCharacterEncoding(this.encoding);

          }

      }

      filterChain.doFilter(request, response);

    }

}

三,org.springframework.web.context.ContextLoaderListener

    ContextLoaderListener是什么呢?ContextLoaderListener是一个监听器。ContextLoaderListener负责监听Web项目的启动过程。

ContextLoaderListener中定义了2个方法:contextInitialized和contextDestroyed,contextInitialized执行时,会初始化web应用

的根上下文信息。

    对于Spring承载的web应用而言,可以在指定在web应用程序启动时载入IOC容器(或者称为WebApplicationContext)。这个功能

是由ContextLoaderListener这个监听器类来完成的。ContextLoaderListener继承自ContextLoader,实际上就是通过ContextLoader

来完成IOC的初始化的。ContextLoaderListener可以看做是Spring的启动器,Spring从这里开始。

ContextLoaderListener源代码:

package org.springframework.web.context;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

public class ContextLoaderListener extends ContextLoader implements ServletContextListener{

    private ContextLoader contextLoader;

    public ContextLoaderListener(){

    }

    public ContextLoaderListener(WebApplicationContext context){

        super(context);

    }

    public void contextInitialized(ServletContextEvent event){

        this.contextLoader = createContextLoader();

        if (this.contextLoader == null) {

            this.contextLoader = this;

        }

        // 初始化Web应用上下文

        this.contextLoader.initWebApplicationContext(event.getServletContext());

    }

    @Deprecated

    protected ContextLoader createContextLoader(){

        return null;

    }

    @Deprecated

    public ContextLoader getContextLoader(){

        return this.contextLoader;

    }

    public void contextDestroyed(ServletContextEvent event){

        if (this.contextLoader != null) {

            this.contextLoader.closeWebApplicationContext(event.getServletContext());

        }

        ContextCleanupListener.cleanupAttributes(event.getServletContext());

    }

}

我们重点来看一下初始化Web应用上下文的方法:initWebApplicationContext,源代码如下:

  public WebApplicationContext initWebApplicationContext(ServletContext servletContext){

      if (servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE) != null) {

          throw new IllegalStateException("Cannot initialize context because there is already a root application context present -

          check whether you have multiple ContextLoader* definitions in your web.xml!");

      }

      Log logger = LogFactory.getLog(ContextLoader.class);

      // 这个日志,相信大家都很熟悉了,在使用tomcat启动一个web项目,控制台都会打印

      // 信息: Initializing Spring root WebApplicationContext

      servletContext.log("Initializing Spring root WebApplicationContext");

      if (logger.isInfoEnabled()) {

          logger.info("Root WebApplicationContext: initialization started");

      }

      long startTime = System.currentTimeMillis();

      try{

          if (this.context == null) {

              this.context = createWebApplicationContext(servletContext);

          }

          if (this.context instanceof ConfigurableWebApplicationContext) {

              configureAndRefreshWebApplicationContext((ConfigurableWebApplicationContext)this.context, servletContext);

          }

          servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);

          ClassLoader ccl = Thread.currentThread().getContextClassLoader();

          if (ccl == ContextLoader.class.getClassLoader()) {

              currentContext = this.context;

          }

          else if (ccl != null) {

              currentContextPerThread.put(ccl, this.context);

          }

          if (logger.isDebugEnabled()) {

              logger.debug("Published root WebApplicationContext as ServletContext attribute with name [" + WebApplicationContext.    ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE + "]");

          }

          if (logger.isInfoEnabled()) {

              long elapsedTime = System.currentTimeMillis() - startTime;

              logger.info("Root WebApplicationContext: initialization completed in " + elapsedTime + " ms");

          }

          return this.context;

      }

      catch (RuntimeException ex) {

          logger.error("Context initialization failed", ex);

          servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, ex);

          throw ex;

      }

      catch (Error err) {

          logger.error("Context initialization failed", err);

          servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, err);

          throw err;

      }

  }

四,org.springframework.web.context.request.RequestContextListener

1,RequestContextListener与ContextLoaderListener的区别是什么?

    RequestContextListener的作用是什么呢?RequestContextListener与ContextLoaderListener的区别是什么?RequestContextListener与

ContextLoaderListener的区别是两者监听不同的事件,RequestContextListener监听的是ServletRequestEvent事件,其实就是HTTP请求事件,

ContextLoaderListener监听ServletContextEvent事件,也就是web容器的启动和关闭事件。我们应该怎么理解RequestContextListener呢,可以

这样来理解:RequestContextListener对web提供了更加精细化的监听,web服务器接收的每次HTTP请求,都会通知RequestContextListener监听

器。

2,RequestContextListener监听器的使用方法

    下面来说一下RequestContextListener这个监听器的使用方法,其实也很简单,只需要在web.xml中进行配置即可。需要注意的问题是

版本问题,如果我们使用的是servlet2.4及以上的版本,我们需要配置监听器,配置如下:

<listener>

    <listener-class>com.yangcq.fc.deploy.DeployListener</listener-class>

</listener>

如果我们使用的是servlet2.4之前的版本,我们需要配置一个过滤器,配置如下:

<filter>

    <filter-name>RequestContextFilter</fileter-name>

    <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>RequestContextFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

3,RequestContextListener监听器的实现原理分析

    不管是监听器RequestContextFilter,还是过滤器RequestContextFilter,原理差不多,都是利用了ThreadLocal这个“专用通道”,将HTTP

请求参数绑定到为该请求提供服务的线程上。实现细节如下:

private static final ThreadLocal<RequestAttributes> requestAttributesHolder = new NamedThreadLocal("Request attributes");

    RequestContextListener实现了ServletRequestListener接口,源代码如下:

package org.springframework.web.context.request;

import javax.servlet.ServletRequest;

import javax.servlet.ServletRequestEvent;

import javax.servlet.ServletRequestListener;

import javax.servlet.http.HttpServletRequest;

import org.springframework.context.i18n.LocaleContextHolder;

public class RequestContextListener implements ServletRequestListener{

    private static final String REQUEST_ATTRIBUTES_ATTRIBUTE = RequestContextListener.class.getName() + ".REQUEST_ATTRIBUTES";

    // 初始化request上下文

    public void requestInitialized(ServletRequestEvent requestEvent){  

        // 注意ServletRequestEvent与ServletContextEvent的不同,RequestContextListener的requestInitialized方法,传递的参数是

        // ServletRequestEvent,而ContextLoaderListener的contextInitialized方法,传递的参数是ServletContextEvent

        if (!(requestEvent.getServletRequest() instanceof HttpServletRequest)) {

            // 首先判断当前的ServletRequestEvent是不是依赖于HttpServletRequest

            throw new IllegalArgumentException("Request is not an HttpServletRequest: " + requestEvent.getServletRequest());

        }

        // 获取当前的HttpServletRequest

        HttpServletRequest request = (HttpServletRequest)requestEvent.getServletRequest();

        // 把HttpServletRequest数据封装到ServletRequestAttributes

        ServletRequestAttributes attributes = new ServletRequestAttributes(request);

        request.setAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE, attributes);

        LocaleContextHolder.setLocale(request.getLocale());

        RequestContextHolder.setRequestAttributes(attributes);

      }

    // 销毁request上下文

    public void requestDestroyed(ServletRequestEvent requestEvent) {

        ServletRequestAttributes attributes = (ServletRequestAttributes)requestEvent.getServletRequest()

            .getAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE);

        ServletRequestAttributes threadAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();

        if (threadAttributes != null){

            if (attributes == null) {

                attributes = threadAttributes;

            }

            LocaleContextHolder.resetLocaleContext();

            RequestContextHolder.resetRequestAttributes();

        }

        if (attributes != null)

            attributes.requestCompleted();

    }

}

五,org.springframework.web.servlet.DispatcherServlet

1,DispatcherServlet核心控制器的作用

    DispatcherServlet是Spring MVC的核心控制器,所有的web请求都要通过DispatcherServlet来处理,这些请求经过转发、匹配、数据处理以

后,交给页面来进行展示。DispatcherServlet的基类是HttpServlet,DispatcherServlet启动时也会初始化上下文信息,这个上下文是对根上下

文的补充。在SpringMVC中,对于不同的web请求,SpringMVC提供了不同的映射策略(HandleMapping),不同的项目可以根据自身情况选择不同的

映射策略。默认情况下,DispatcherServlet使用的是BeanNameUrlHandlerMapping作为自己的映射策略。

2,DispatcherServlet核心控制器的初始化

    DispatcherServlet的初始化,是在ContextLoaderListener的初始化之后。DispatcherServlet的初始化的时间与在web.xml中load-on-startup

的定义有关。DispatcherServlet会建立自己的上下文来持有SpringMVC的Bean对象,在建立这个自己持有的IOC容器时,会从ServletContext中得

到根上下文,作为DispatcherServlet持有上下文的双亲上下文。从这里我们可以看出,ServletContext是根上下文,DispatcherServlet是第二层次

的二级上下文。DispatcherServlet上下文是对根上下文的补充和扩展,是为了更好的支持web。好,先看一下DispatcherServlet的继承关系:

    * public class DispatcherServlet extends FrameworkServlet

    * public abstract class FrameworkServlet extends HttpServletBean

    * public abstract class HttpServletBean extends HttpServlet implements EnvironmentCapable, EnvironmentAware

    从上面这个继承关系可以看出,DispatcherServlet的本质还是一个HttpServlet,SpringMVC框架就是对servlet的封装。万变不离其宗。其实,

DispatcherServlet也是通过使用Servlet API来处理HTTP请求的。DispatcherServlet实现的原理,和Servlet很相似。

3,DispatcherServlet核心控制器的配置方法

配置如下:

<servlet>

    <servlet-name>dispatcher</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <load-on-startup>2</load-on-startup>

</servlet>

参考资料:《tomcat启动控制台输出日志完整版》

2016-9-6 14:36:14 org.apache.catalina.core.AprLifecycleListener init

信息: Loaded APR based Apache Tomcat Native library 1.1.30 using APR version 1.4.8.

2016-9-6 14:36:14 org.apache.catalina.core.AprLifecycleListener init

信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

2016-9-6 14:36:14 org.apache.catalina.core.AprLifecycleListener initializeSSL

信息: OpenSSL successfully initialized with version OpenSSL 1.0.1g 7 Apr 2014

2016-9-6 14:36:14 org.apache.coyote.http11.Http11AprProtocol init

信息: Initializing Coyote HTTP/1.1 on http-8080

2016-9-6 14:36:14 org.apache.coyote.ajp.AjpAprProtocol init

信息: Initializing Coyote AJP/1.3 on ajp-8009

2016-9-6 14:36:14 org.apache.catalina.startup.Catalina load

信息: Initialization processed in 1196 ms

2016-9-6 14:36:14 org.apache.catalina.core.StandardService start

信息: Starting service Catalina

2016-9-6 14:36:14 org.apache.catalina.core.StandardEngine start

信息: Starting Servlet Engine: Apache Tomcat/6.0.41

2016-9-6 14:36:14 org.apache.catalina.startup.HostConfig deployDescriptor

信息: Deploying configuration descriptor host-manager.xml

2016-9-6 14:36:15 org.apache.catalina.startup.HostConfig deployDescriptor

信息: Deploying configuration descriptor manager.xml

2016-9-6 14:36:15 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory docs

2016-9-6 14:36:15 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory examples

2016-9-6 14:36:15 org.apache.catalina.core.ApplicationContext log

信息: ContextListener: contextInitialized()

2016-9-6 14:36:15 org.apache.catalina.core.ApplicationContext log

信息: SessionListener: contextInitialized()

2016-9-6 14:36:15 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory yangcq2016

2016-9-6 14:36:15 org.apache.catalina.loader.WebappClassLoader validateJarFile

信息: validateJarFile(D:\apache-tomcat-6.0.41\webapps\yangcq2016\WEB-INF\lib\javaee.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

2016-9-6 14:36:15 org.apache.catalina.loader.WebappClassLoader validateJarFile

信息: validateJarFile(D:\apache-tomcat-6.0.41\webapps\yangcq2016\WEB-INF\lib\jeus.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

2016-9-6 14:36:16 org.apache.catalina.core.StandardContext listenerStart

严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)

    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4153)

    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)

    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)

    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)

    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)

    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)

    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)

    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)

    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)

    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)

    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)

    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)

    at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)

    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)

    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)

    at org.apache.catalina.core.StandardService.start(StandardService.java:525)

    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)

    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

2016-9-6 14:36:16 org.apache.catalina.core.StandardContext listenerStart

严重: Error configuring application listener of class org.springframework.web.util.IntrospectorCleanupListener

java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)

    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4153)

    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)

    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)

    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)

    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)

    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)

    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)

    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)

    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)

    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)

    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)

    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)

    at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)

    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)

    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)

    at org.apache.catalina.core.StandardService.start(StandardService.java:525)

    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)

    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

2016-9-6 14:36:16 org.apache.catalina.core.StandardContext listenerStart

严重: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener

java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)

    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4153)

    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)

    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)

    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)

    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)

    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)

    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)

    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)

    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)

    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)

    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)

    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)

    at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)

    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)

    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)

    at org.apache.catalina.core.StandardService.start(StandardService.java:525)

    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)

    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

2016-9-6 14:36:16 org.apache.catalina.core.StandardContext listenerStart

严重: Skipped installing application listeners due to previous error(s)

2016-9-6 14:36:16 org.apache.catalina.core.StandardContext start

严重: Error listenerStart

2016-9-6 14:36:16 org.apache.catalina.core.StandardContext start

严重: Context [/yangcq2016] startup failed due to previous errors

2016-9-6 14:36:16 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory yangcq2015

2016-9-6 14:36:16 org.apache.catalina.loader.WebappClassLoader validateJarFile

信息: validateJarFile(D:\apache-tomcat-6.0.41\webapps\yangcq2015\WEB-INF\lib\javaee.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

2016-9-6 14:36:16 org.apache.catalina.loader.WebappClassLoader validateJarFile

信息: validateJarFile(D:\apache-tomcat-6.0.41\webapps\yangcq2015\WEB-INF\lib\jeus.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

2016-09-06 14:36:17,149 [main] INFO  com.yangcq.ycq.deploy.TransactionDeployer - start deploy config source file. sourcePath : D:\apache-tomcat-6.0.41\webapps\yangcq2015\WEB-INF\classes\design, distPath : D:\apache-tomcat-6.0.41\webapps\yangcq2015\WEB-INF\classes\config

2016-09-06 14:36:25,404 [main] INFO  com.yangcq.ycq.deploy.TransactionDeployer - deploy config source file ok...

2016-9-6 14:36:25 org.apache.catalina.core.ApplicationContext log

信息: Initializing Spring root WebApplicationContext

2016-9-6 14:36:36 org.apache.catalina.core.ApplicationContext log

信息: Initializing Spring FrameworkServlet 'dispatcher'

2016-9-6 14:36:37 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory ycq

2016-9-6 14:36:37 org.apache.catalina.core.ApplicationContext log

信息: Set web app root system property: 'webapp.root' = [D:\apache-tomcat-6.0.41\webapps\ycq\]

2016-9-6 14:36:37 org.apache.catalina.core.ApplicationContext log

信息: Initializing Logback from [classpath:logback.xml]

14:36:37,873 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]

14:36:37,873 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]

14:36:37,873 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/D:/apache-tomcat-6.0.41/webapps/ycq/WEB-INF/classes/logback.xml]

14:36:38,076 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 30 seconds

14:36:38,076 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:\apache-tomcat-6.0.41\webapps\ycq\WEB-INF\classes\logback.xml]] every 30 seconds.

14:36:38,076 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter

14:36:38,076 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]

14:36:38,092 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ROLLING]

14:36:38,171 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use zip compression

14:36:38,171 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern MSS_HOME_IS_UNDEFINED/log//archives//ycq/Out-%d{yyyy-MM-dd}.%i for the active file

14:36:38,186 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@37ecb28e - The date pattern is 'yyyy-MM-dd' from file name pattern 'MSS_HOME_IS_UNDEFINED/log//archives//ycq/Out-%d{yyyy-MM-dd}.%i.zip'.

14:36:38,186 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@37ecb28e - Roll-over at midnight.

14:36:38,186 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@37ecb28e - Setting initial period to Mon Nov 09 10:37:02 CST 2015

14:36:38,186 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property

14:36:38,264 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ROLLING] - Active log file name: MSS_HOME_IS_UNDEFINED/log//Outycq.log

14:36:38,264 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ROLLING] - File property is set to [MSS_HOME_IS_UNDEFINED/log//Outycq.log]

14:36:38,264 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]

14:36:38,264 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ERRORLog]

14:36:38,264 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use zip compression

14:36:38,264 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern MSS_HOME_IS_UNDEFINED/log//archives//ycq/Error-%d{yyyy-MM-dd}.%i for the active file

14:36:38,264 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@183648b1 - The date pattern is 'yyyy-MM-dd' from file name pattern 'MSS_HOME_IS_UNDEFINED/log//archives//ycq/Error-%d{yyyy-MM-dd}.%i.zip'.

14:36:38,264 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@183648b1 - Roll-over at midnight.

14:36:38,264 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@183648b1 - Setting initial period to Mon Nov 09 10:37:02 CST 2015

14:36:38,264 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property

14:36:38,280 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.boolex.JaninoEventEvaluator] for [evaluator] property

14:36:38,420 |-INFO in ch.qos.logback.classic.boolex.JaninoEventEvaluator@c710a3b - Adding [return] prefix and a semicolon suffix. Expression becomes [return level>=40000;]

14:36:38,420 |-INFO in ch.qos.logback.classic.boolex.JaninoEventEvaluator@c710a3b - See also http://logback.qos.ch/codes.html#block
14:36:38,764 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ERRORLog] - Active log file name: MSS_HOME_IS_UNDEFINED/log//Errorycq.log

14:36:38,764 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ERRORLog] - File property is set to [MSS_HOME_IS_UNDEFINED/log//Errorycq.log]

14:36:38,764 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]

14:36:38,764 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]

14:36:38,764 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property

14:36:38,764 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.ycq] to DEBUG

14:36:38,764 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG

14:36:38,764 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]

14:36:38,779 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.

14:36:38,779 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6dd6c962 - Registering current configuration as safe fallback point

14:36:38,764 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ERRORLog] - Active log file name: MSS_HOME_IS_UNDEFINED/log//Errorycq.log

14:36:38,764 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ERRORLog] - File property is set to [MSS_HOME_IS_UNDEFINED/log//Errorycq.log]

14:36:38,764 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]

14:36:38,764 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]

14:36:38,764 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property

14:36:38,764 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.ycq] to DEBUG

14:36:38,764 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG

14:36:38,764 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]

14:36:38,779 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.

14:36:38,779 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6dd6c962 - Registering current configuration as safe fallback point

14:36:38,779 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 30 seconds

14:36:38,779 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:\apache-tomcat-6.0.41\webapps\ycq\WEB-INF\classes\logback.xml]] every 30 seconds.

14:36:38,779 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter

14:36:38,795 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]

14:36:38,795 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ROLLING]

14:36:38,795 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use zip compression

14:36:38,795 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern MSS_HOME_IS_UNDEFINED/log//archives//ycq/Out-%d{yyyy-MM-dd}.%i for the active file

14:36:38,795 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@159a8bf2 - The date pattern is 'yyyy-MM-dd' from file name pattern 'MSS_HOME_IS_UNDEFINED/log//archives//ycq/Out-%d{yyyy-MM-dd}.%i.zip'.

14:36:38,795 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@159a8bf2 - Roll-over at midnight.

14:36:38,795 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@159a8bf2 - Setting initial period to Mon Nov 09 10:37:02 CST 2015

14:36:38,795 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property

14:36:38,795 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ROLLING] - Active log file name: MSS_HOME_IS_UNDEFINED/log//Outycq.log

14:36:38,795 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ROLLING] - File property is set to [MSS_HOME_IS_UNDEFINED/log//Outycq.log]

14:36:38,795 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]

14:36:38,795 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ERRORLog]

14:36:38,795 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use zip compression

14:36:38,795 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern MSS_HOME_IS_UNDEFINED/log//archives//ycq/Error-%d{yyyy-MM-dd}.%i for the active file

14:36:38,795 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@5559c7f2 - The date pattern is 'yyyy-MM-dd' from file name pattern 'MSS_HOME_IS_UNDEFINED/log//archives//ycq/Error-%d{yyyy-MM-dd}.%i.zip'.

14:36:38,795 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@5559c7f2 - Roll-over at midnight.

14:36:38,795 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@5559c7f2 - Setting initial period to Mon Nov 09 10:37:02 CST 2015

14:36:38,795 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property

14:36:38,795 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.boolex.JaninoEventEvaluator] for [evaluator] property

14:36:38,795 |-INFO in ch.qos.logback.classic.boolex.JaninoEventEvaluator@79560ca4 - Adding [return] prefix and a semicolon suffix. Expression becomes [return level>=40000;]

14:36:38,795 |-INFO in ch.qos.logback.classic.boolex.JaninoEventEvaluator@79560ca4 - See also http://logback.qos.ch/codes.html#block
14:36:38,810 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ERRORLog] - Active log file name: MSS_HOME_IS_UNDEFINED/log//Errorycq.log

14:36:38,810 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[ERRORLog] - File property is set to [MSS_HOME_IS_UNDEFINED/log//Errorycq.log]

14:36:38,810 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]

14:36:38,810 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]

14:36:38,810 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property

14:36:38,810 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.ycq] to DEBUG

14:36:38,810 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG

14:36:38,810 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]

14:36:38,810 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.

14:36:38,810 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@5b3353f - Registering current configuration as safe fallback point

2016-9-6 14:36:38 org.apache.catalina.core.ApplicationContext log

信息: JUL to SLF4J bridge is not available on the classpath

2016-9-6 14:36:38 org.apache.catalina.core.ApplicationContext log

------------------------------------初始化root WebApplicationContext------------------------------------

信息: Initializing Spring root WebApplicationContext

2016-9-6 14:36:38 org.springframework.web.context.ContextLoader initWebApplicationContext

信息: Root WebApplicationContext: initialization started

2016-9-6 14:36:39 org.springframework.web.context.support.XmlWebApplicationContext prepareRefresh

信息: Refreshing Root WebApplicationContext: startup date [Tue Sep 06 14:36:39 CST 2016]; root of context hierarchy

2016-9-6 14:36:39 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from class path resource [applicationContext.xml]

2016-9-6 14:36:39 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from class path resource [applicationContext-dao.xml]

2016-9-6 14:36:39 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from class path resource [applicationContext-job.xml]

2016-9-6 14:36:39 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from class path resource [applicationContext-cache.xml]

2016-9-6 14:36:40 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer loadProperties

信息: Loading properties file from class path resource [cache.properties]

2016-9-6 14:36:43 org.springframework.context.support.DefaultLifecycleProcessor start

信息: Starting beans in phase 2147483647

14:36:43.691 [INFO ] [main] [] Scheduler schedulerFactoryBean_$_NON_CLUSTERED started. Caller+0     at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:575)

14:36:43.691 [DEBUG] [schedulerFactoryBean_QuartzSchedulerThread] [] batch acquisition of 0 triggers Caller+0     at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:276)

2016-9-6 14:36:43 org.springframework.scheduling.quartz.SchedulerFactoryBean startScheduler

信息: Starting Quartz Scheduler now

2016-9-6 14:36:43 org.springframework.web.context.ContextLoader initWebApplicationContext

信息: Root WebApplicationContext: initialization completed in 4897 ms

------------------------------------初始化root WebApplicationContext------------------------------------

------------------------------------初始化appServlet------------------------------------

2016-9-6 14:36:43 org.apache.catalina.core.ApplicationContext log

信息: Initializing Spring FrameworkServlet 'appServlet'

2016-9-6 14:36:43 org.springframework.web.servlet.DispatcherServlet initServletBean

信息: FrameworkServlet 'appServlet': initialization started

2016-9-6 14:36:43 org.springframework.web.context.support.XmlWebApplicationContext prepareRefresh

信息: Refreshing WebApplicationContext for namespace 'appServlet-servlet': startup date [Tue Sep 06 14:36:43 CST 2016]; parent: Root WebApplicationContext

2016-9-6 14:36:43 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from class path resource [spring-servlet.xml]

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCache/clearCache.jhtml] onto handler 'tapCacheControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCache/refreshCache.jhtml] onto handler 'tapCacheControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCache/cacheInfo.jhtml] onto handler 'tapCacheControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapDateFreq/tapDateFreq.jhtml] onto handler 'tapDateFreqControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpi/tapCKpiData.jhtml] onto handler 'tapCKpiDataControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpi/tapCKpiPlanData.jhtml] onto handler 'tapCKpiDataControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpi/tapCKpiDesc.jhtml] onto handler 'tapCKpiDataControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCBranch/queryTapCBranch.jhtml] onto handler 'tapCBranchControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpiBasisLine/queryBasisLine.jhtml] onto handler 'tapCKpiBasisLineControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpiChartMonthLine/queryChartMonthLine.jhtml] onto handler 'tapCKpiChartMonthLineControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpiChartMonthLine/getServerSystemTime.jhtml] onto handler 'tapCKpiChartMonthLineControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpiColumnMonthLine/queryColumnMonthLine.jhtml] onto handler 'tapCKpiColumnMonthLineControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpiDegreeLine/queryDegreeLine.jhtml] onto handler 'tapCKpiDegreeLineControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpiMeterLine/queryMeterLine.jhtml] onto handler 'tapCKpiMeterLineControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCKpiStructLine/queryStructLine.jhtml] onto handler 'tapCKpiStructLineControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCUserLogonV/userLogon.jhtml] onto handler 'tapCUserLogonVControl'

2016-9-6 14:36:44 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler

信息: Mapped URL path [/tapCUserLogonV/userLogout.jhtml] onto handler 'tapCUserLogonVControl'

2016-9-6 14:36:45 org.springframework.web.servlet.DispatcherServlet initServletBean

信息: FrameworkServlet 'appServlet': initialization completed in 1266 ms

------------------------------------初始化appServlet------------------------------------

2016-9-6 14:36:45 org.apache.catalina.startup.HostConfig deployDirectory

信息: Deploying web application directory ROOT

2016-9-6 14:36:45 org.apache.coyote.http11.Http11AprProtocol start

信息: Starting Coyote HTTP/1.1 on http-8080

2016-9-6 14:36:45 org.apache.coyote.ajp.AjpAprProtocol start

信息: Starting Coyote AJP/1.3 on ajp-8009

2016-9-6 14:36:45 org.apache.catalina.startup.Catalina start

信息: Server startup in 30331 ms
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: