2013-11-15 43 views
0

我第一次嘗試使用的ServletContextListener執行perticular功能,每次應用程序獲取deployed.For這個我已經採取了一個簡單的Java類文件,並在其上實現了ServletContextListener並宣佈讀心人在web.xml但上部署它給誤差嚴重:錯誤listenerStart在Java Web應用程序

SEVERE: Error listenerStart in netbeans .. 

Apache tomcat server logs in netbeans.. 

2013年11月15日上午11時59分03秒org.apache.catalina.core.StandardContext listenerStart 嚴重:錯誤配置類的應用監聽器app.classes.ContextListenerProcess java.lang.IllegalAccessException:Class org.apache.catalin a.core.DefaultInstanceManager不能訪問類app.classes.ContextListenerProcess的成員使用修改器「」

這裏是我的Java類文件實現了ServletContextListener

package app.classes; 

import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 
import javax.servlet.annotation.WebListener; 


@WebListener() 
class ContextListenerProcess implements ServletContextListener { 

@Override 
public void contextDestroyed(ServletContextEvent sce) { 
} 

@Override 
public void contextInitialized(ServletContextEvent sce) { 
    // Do your startup work here 
    System.out.println("Processing Started ....."); 
} 
} 

這裏是我的web.xml加入ContextListenerProcess類...

<listener> 
<listener-class>app.classes.ContextListenerProcess</listener-class> 
</listener> 

請你們幫我解決這個問題..提前 謝謝..

+0

檢查服務器日誌中的詳細錯誤消息 –

+0

@JigarJoshi先生我更新了我的帖子與服務器日誌 – Adi

+0

爲什麼有一個括號旁邊的@WebListener – Keerthivasan

回答

0

我試過你的代碼示例,它爲我工作。

package app.classes; 

    import javax.servlet.ServletContextEvent; 
    import javax.servlet.ServletContextListener; 
    import javax.servlet.annotation.WebListener; 


    /** 
    * Application Lifecycle Listener implementation class ContextListenerProcess 
    * 
    */ 
    @WebListener 
    public class ContextListenerProcess implements ServletContextListener { 

     /** 
     * Default constructor. 
     */ 
     public ContextListenerProcess() { 
      // TODO Auto-generated constructor stub 
     } 

     public void contextDestroyed(ServletContextEvent sce) { 
     } 

     public void contextInitialized(ServletContextEvent sce) { 
      // Do your startup work here 
      System.out.println("Processing Started ....."); 
     } 
    } 

,這是我的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Use this definition if using a Java EE 6 container This also stops Eclipse 
    from complaining that 3.0 is not a valid version <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" 
    http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> --> 
<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" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    version="2.5"> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
    <listener> 
     <listener-class>app.classes.ContextListenerProcess</listener-class> 
    </listener> 
    <servlet> 
     <description></description> 
     <display-name>WebListenerServlet</display-name> 
     <servlet-name>WebListenerServlet</servlet-name> 
     <servlet-class>app.classes.WebListenerServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>WebListenerServlet</servlet-name> 
     <url-pattern>/index.html</url-pattern> 
    </servlet-mapping> 
</web-app> 

後,我跑這個配置是成功的應用,我看到在控制檯上Processing Started .....消息的Tomcat啓動時。我是你的代碼之間添加僅

  <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
     </dependency> 

的差異和我是你放支架@WebListener註釋以後,你應該刪除它,你ContextListenerProcess類沒有訪問修飾符,這意味着它是默認情況下,它應該是公開的。

1

ContextListenerProcess類需要是公共的,而不是包專用。

相關問題