Sto creando un'app Web di base con Maven, quindi l'importazione su Eclipse 4.2. Ho installato Tomcat 7 come server. Sto cercando di configurare i dati primaverili con mongodb per un'applicazione web.WebApplicationInitializer container.addServlet() restituisce null
sto seguendo l'approccio di configurazione basato su codice trovato qui: WebApplicationInitializer
Quando eseguo il progetto sul server, ottengo un'eccezione di puntatore nullo nella classe WebApplicationInitializer ho creato. La riga: container.addServlet ("dispatcher", new DispatcherServlet (dispatcherContext)); sta restituendo null.
Che diamine mi manca? Sono un po 'nuovo nella creazione di app web da zero usando le annotazioni.
Qui è la classe in questione:
public class ATWWebAppInitializer implements WebApplicationInitializer
{
@Override
public void onStartup(ServletContext container) throws ServletException
{
// Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(SpringMongoConfig.class);
// Manage the lifecycle of the root application context
container.addListener(new ContextLoaderListener(rootContext));
// Create the dispatcher servlet's Spring application context
AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext();
dispatcherContext.register(ATWDispatcherConfig.class);
// Register and map the dispatcher servlet
ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/*");
}
}
provato ad aggiungere questo al POM:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
non ha cambiato nulla, ancora ottenere il NPE. Ho letto qui (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html) che container.addServlet restituisce null se un servlet è già registrato? Tomcat sta già registrando un servlet?
Ci scusiamo per aver perso il tempo di tutti, Avevo un file web.xml che registrava lo stesso servlet. Quindi questo restituiva solo null. Ora per sistemare il 404, probabilmente ha incasinato il controller in qualche modo.
Non proprio sicuro, una configurazione simile funziona in modo pulito per me. Quindi essenzialmente stai ricevendo un'eccezione di puntatore nullo sulla riga 'dispatcher.setLoadOnStartup()', considerando che la riga precedente sta dando un dispatcher nullo? –
Questo è corretto. La riga successiva che accede al dispatcher sta lanciando l'NPE. Penso che potrebbe avere qualcosa a che fare con la servlet-API. Non ho impostato una dipendenza in POM, ho solo aggiunto il jar al mio percorso di build dalla directory di tomcat lib. – MattG
Hmmmm, Sto avendo esattamente lo stesso problema e non ho alcun file 'web.xml', cercando di farlo puro annotato. – Jagger