Déploiement d'une servlet par programme avec Jetty
J'ai une servlet qui je souhaite déployer par programmation à l'aide de la Jetée. La servlet utilise le Printemps et c'est web.xml points pour le Printemps contexte fichier XML que vous attendez.
Pour le moment, j'essaie juste l'exemple de code à partir de la Jetée de docs, mais avec mon propre servlet:
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new BatchReceiver()),"/br/*");
server.start();
server.join();
Il en résulte l'exception suivante:
2012-05-24 14:43:20.190:INFO:oejs.Server:jetty-8.1.3.v20120416
2012-05-24 14:43:20.266:WARN:/:unavailable
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
at org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:84)
at com.spiffymap.sealog.server.servlet.BatchReceiver.init(BatchReceiver.java:126)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:492)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:312)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:778)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:258)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)
at org.eclipse.jetty.server.Server.doStart(Server.java:262)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at com.spiffymap.sealog.server.servlet.TestBatchReceiver.main(TestBatchReceiver.java:26)
2012-05-24 14:43:20.335:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080
Comment puis-je configurer ma servlet, de sorte que la Jetée sait où il est web.xml et le Printemps contexte?
Toute aide serait vraiment appréciée!
MODIFIER
Apparemment donc, je n'ai pas besoin d'un web.xml mais je ne besoin de pointer la Jetée de mon Ressort du contexte. J'ai essayé quelque chose comme ce qui suit:
context.setInitParameter("contextConfigLocation", "classpath*:**/*Context.xml");
Mais il ne fonctionne pas (encore produit les mêmes exception). J'ai aussi essayé le "contextConfigLocation" sur le ServletHolder en vain.
source d'informationauteur DeadPassive
Vous devez vous connecter pour publier un commentaire.
Pour ceux qui sont intéressés, j'ai eu que cela fonctionne comme suit:
L'étape clé qui me manquait était
qui charge le Printemps contexte.
si vous voulez traiter un web.xml vous devez utiliser un WebappContext, un servlet contexte ne sais rien à propos de web.xml's
voir: http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/OneWebApp.java