Servlet不是init

时间:2014-12-03 11:20:22

标签: java tomcat servlets

我在项目中使用了servlet。今天一切都很好用。我使用GWT,但我不认为这很重要。在我的服务器端,我需要获得类似

的上下文路径
path = ConfAppServer.getRealContextPath() + "/docviewer";
logger.debug("Path = " + path);

但是在日志文件中我得到以下内容

Path = null/docviewer

ConfAppServer类包含服务器端配置。运行servlet ConfigServlet时会设置一些设置。

public class ConfAppServer {
    private static String   realContextPath;
    public static String getContextPath() {
        return contextPath;
    }

    public static String getRealContextPath() {
        return realContextPath;
    }
}

public class ConfAppServlet extends HttpServlet {

public void init(ServletConfig config) throws ServletException {
    LOG.info("begin ConfAppServlet init");
}

但我没有得到最后的日志信息。 Servlet没有初始化。 这是我的web.xml文件

<servlet>
  <description>Servlet to identify and download the application settings</description>
  <servlet-name>ConfAppServlet</servlet-name>
  <servlet-class>com.myproject.servlet.ConfAppServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

但是当我在Eclipse中运行我的项目时,servlet工作正常。但是当我在服务器上部署war时,servlet就会停止工作。

我使用Eclipse Indigo和默认的内部服务器。我的外部服务器是Apache Tomcat 7

请帮我解决我的问题。我该怎么办?为什么这个servlet没有初始化以及如何修复它?

修改 在我的tomcat日志文件中,我找到了这一行

ERROR:  'C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\null\docviewer

编辑2 我在日志文件中发现了错误

Dec 03, 2014 10:14:26 AM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet ConfAppServlet as unavailable
Dec 03, 2014 10:14:26 AM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /egr threw load() exception
java.lang.ClassNotFoundException: by.avest.crypto.pkcs11.provider.AvestProvider
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:127)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

编辑3 我将缺少的类添加到lib文件夹中,一切正常。这很奇怪,因为我不会改变与这门课程有关的任何事情。谢谢大家的帖子!

1 个答案:

答案 0 :(得分:-1)

尝试在init方法中调用super.init(config)