2009-08-26 7 views
4

Je souhaite lancer une exception ServletContext à partir d'une méthode dans une classe qui implémente ServletContextLister.Lancement d'une exception à partir d'un servletContextListener

Voici mon implémentation qui échoue:

public class Initializer implements ServletContextListener { 

    private void checkEncryptedFile() throws ServletException { 

    FileReader fr; 
    try { 
     fr = new FileReader("TestFile"); 
     BufferedReader br = new BufferedReader(fr); 
     String str = br.readLine(); 
     if(!str.equals("aasditya")){ 
     throw new ServletException(); 
     } 


    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch(IOException e){ 
     e.printStackTrace(); 
    } 
    catch(ServletException se){ 
     throw new ServletException("kiasku " + se.getMessage(), se); 

    } 
    } 
} 

Quelqu'un peut-il suggérer des méthodes alternatives. S'il te plaît, guide-moi là-dessus. Merci

+0

Comment est-il échoue. Si vous ajoutez la journalisation, quel est le chemin d'exécution? – Mark

+1

Et plus important encore, pourquoi voulez-vous jeter cette exception, et qu'attendez-vous qu'il se produise une fois que vous l'avez lancé? L'écouteur de contexte n'est pas destiné à être un point de contrôle; mettez-y votre initialisation de servlet à la place. – kdgregory

Répondre

2

Lorsque la méthode d'interface est de lancer une exception aussi, vous devez supprimer les blocs catch sans

try { 
       //.... 

    } 
    catch(IOException e){ 
      throw new ServletException("kiasku " + e.getMessage(), e); 
    } 

Et que votre gestion des exceptions devrait fonctionner.

EDIT:

Avez-vous mis en œuvre les méthodes ont d'interface de ServletContextListener correctement? Ils ne sont pas dans votre exemple de code. Mais ils doivent être dans la classe. Pour autant que je sache, les méthodes interfae ne lient aucun type d'exception. Lorsque vous voulez vraiment briser la notification de l'écouteur, vous devez lancer une exception RuntimeException.

EDIT2:

Je changerais aussi

if(!str.equals("aasditya")){ 
throw new ServletException(); 
} 

à

if(!"aasditya".equals(str)){ 
throw new ServletException(); 
} 
+0

"Avez-vous implémenté les méthodes d'interface de ServletContextListener correctement, elles ne sont pas dans votre exemple de code, mais elles doivent être dans la classe." - Oui, je les ai ajoutés. J'appelle la méthode ci-dessus dans la méthode interface. –

Questions connexes