Frage

Erstellen von Servlets, dass Geräte contextInitializer Schnittstelle in diesem Code

dann Datei in contextinitialized() Zugriff auf diese Zeile mit

InputStream input = getServletContext().getResourceAsStream("/WEB-INF/file.properties"));

Diese Ausnahme aufgetreten

java.lang.NullPointerException         at      
    javax.servlet.GenericServlet.getServletContext(GenericServlet.java:160)

irgendwelche Ideen?

War es hilfreich?

Lösung

Die ServletContextEvent Argument, das Sie die HttpServlet#init() wie folgt:

protected void init() throws ServletException {
    InputStream input = getServletContext().getResourceAsStream("/WEB-INF/file.properties"));
    // ...
}

Andere Tipps

Ich bin mit der ContextInitializer nicht vertraut Schnittstelle, die Sie beziehen, sondern auf der Grundlage der Ausnahme sind Sie meine erste Reaktion bekommen, ist, dass nein, du getServletContext innerhalb des contextInitialized Methode nicht aufrufen können. Wenn Sie überprüfen http://www.docjar.com/ html / api / javax / Servlet / GenericServlet.java.html , werden Sie, dass in Zeile 160 finden es versucht, den Kontext von der ServletConfig, zu erhalten und offenbar das ServletConfig Objekt für das Servlet nicht initialisiert noch.

Ihre beste Wette (meiner Meinung nach) wäre es, den Code auszuführen Sie an einem Punkt laufen wollen, sind in den beide ServletConfig und ServletContext initialisiert werden - da ich nicht vertraut bin, was Umgebung, die Sie gerade arbeiten ( wie ich schon sagte, ich bin mit ContextInitializer nicht vertraut, so dass ich weiß nicht, woher das) kam, kann ich nicht wirklich zu helfen geht viel so weit wie Ihr Servlet-Lebenszyklus.

Je nachdem, was genau Sie versuchen, können Sie zu tun, sollten Sie Ihre Eingabestrom als statisches Feld mit. In Ihrem doGet / doPost Methode, würden Sie überprüfen, um zu sehen, ob es initialisiert worden ist - wenn es hat, dann groß, trägt auf als normal; und wenn es nicht hat, dann initialisieren es als notwendig. Ihr Kontext und Config sollten in doGet / doPost zur Verfügung, so dass Sie sollten gut sein zu gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top