发布3(tomcat的执行流程和各个文件夹的作用)

    第一次出现这样的错误的时候,我很害怕,不知道是神马原因造成的这样的错误。后来问了同事,说是可能是因为tomcat缓存的问题。管它呢,死马当活马医吧!
     因为是在linux环境下操作的,所以使用linux命令简单明了快捷神速,大大提高了工作效率!
     第一步:先停止tomcat服务器。
             可使用ps –ef | grep tomcat 命令来查看tomcat服务进程是否已停止。
             在shell端输入service tomcat stop 命令停止tomcat 服务。
     第二步:将系统缓存清除 即删除 tomcat/work 文件夹下的文件。
     第三步:打开shell 输入 service tomcat start。

HTTP Status 500 -
________________________________________
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.io.FileNotFoundException: /usr/local/tomcat/work/Catalina/scm.3golden.com.cn/_/org/apache/jsp/front/warehousing/getWarehousing_jsp.java (Permission denied)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.<init>(FileOutputStream.java:179)
java.io.FileOutputStream.<init>(FileOutputStream.java:70)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:141)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102)
filters.SecurityFilter.doFilter(SecurityFilter.java:95)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.26 logs.
________________________________________
Apache Tomcat/5.5.26

   好了,不仅要知其然,还要知其所以然哈!出现这种错误的原因是因为修改了应用之后,没有重启tomcat服务器,所以系统缓存里面存放的只是以前tomcat编译过的文件。解释一下编译的文件是怎么产生的哈,有必要先了解一下tomcat的执行流程哈。
tomcat的执行流程:
tomcat文件夹的作用

        1.用户在浏览器中输入请求地址;

        2.客户端通过浏览器将请求地址发送给WEB容器;

        3.WEB容器根据请求地址找到*.jsp文件;

        4.将*.jsp文件转换成*.java文件;

        5.将*.java文件经过编译成*.class文件;

        6.服务器执行*.class文件并将结果反馈给浏览器。



tomcat文件夹的作用
 
tomcat的主目录文件夹有以下几个:

          1. bin:用于存放启动和关闭tomcat的可执行文件。

          2. lib:里面存放需要的jar包。

          3. conf:tomcat的各种配置文件,tomcat启动时需要读取的配置文件主要有:

                   server.xml,web.xml,tomcat-users.xml等等。服务器的修改都要从此目录中进行。

          4. logs:日志文件,如果服务器出现错误,会自动记录。

          5. server:服务器的管理程序。

          6. webapps:所有的可执行的web项目都会放到此目录中。

          7. work:tomcat把各种由jsp生成的servlet都放在了这个文件夹下,里面包含.java文件

                   和.class文件。

       

配置一个虚拟目录:

         1.要配置一个虚拟目录必须有以下的目录结构:

           WEB ROOT--->这是web根目录,可任意定义,一般的可执行.jsp文件都放在此文件夹中。   

               | WEB-INF ---> 虚拟目录必须有此文件夹,格式要求。

                   | web.xml 虚拟目录的配置文件。

       2.虚拟目录中的web.xml文件可以在文件夹webapps->ROOT->WEB-INF->web.xml找到。

        3.要想让tomcat启动时找到虚拟目录,需要在conf文件夹下的server.xml中进行配置。

          <Context path="/demo" docBase="D:\xnml"/>    此句必须写在</host>之上;

                 Context:表示配置一个新的上下文;

                 path:浏览器的输入路径,注意必须有 “/”;

                 docBase:path路径对应着硬盘上的真实目录;xnml文件夹也是web根目录;

        4.在conf文件夹中的web.xml文件中,ctrl+F 搜索list到

              <init-param>
                  <param-name>listings</param-name>
                  <param-value>true</param-value>
             </init-param>

          有的时候为false,改成true,意思是tomcat在加载时将目录列表功能打开,我们才可以访问虚

          拟目录中的文件;

        5.在D:\xnml下写个.jsp文件;

        6.在浏览器中输入:http://localhost:8080/demo  tomcat启动时会执行配置文件进而执行.jsp文

          件。


猜你喜欢

转载自0609xiaohua.iteye.com/blog/1235488