Embedded Jetty with Servlet and Annotations
How do I programmatically configure Jetty that I can use Servlet Annotations?
If you doing just servlets with jetty, this article could be interesting for you.
I show you how I did it. Here comes the configuration:
... server = new Server(port); server.addBean(LOG); WebAppContext webAppContext = new WebAppContext(); webAppContext.setContextPath("/"); String webxmlLocation = JettyServer.class.getResource("/webapp/WEB-INF/web.xml").toString(); webAppContext.setDescriptor(webxmlLocation); String resLocation = JettyServer.class.getResource("/webapp").toString(); webAppContext.setResourceBase(resLocation); webAppContext.setParentLoaderPriority(true); webAppContext.getMetaData().addContainerResource(Resource.newResource( new File(JettyServer.class.getProtectionDomain().getCodeSource().getLocation().getPath()))); webAppContext.setConfigurations(new Configuration[] { new WebInfConfiguration(), new WebXmlConfiguration(), new MetaInfConfiguration(), new FragmentConfiguration(), new EnvConfiguration(), new PlusConfiguration(), new AnnotationConfiguration(), new JettyWebXmlConfiguration() }); server.setHandler(webAppContext); server.start(); ...
And I defined the following dependencies in build.gradle.
... def jettyVersion = '9.4.7.v20170914' dependencies { providedCompile 'javax.servlet:javax.servlet-api:3.1.0' compile group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jettyVersion compile group: 'org.eclipse.jetty', name: 'jetty-webapp', version: jettyVersion compile group: 'org.eclipse.jetty', name: 'jetty-annotations', version: jettyVersion compile group: 'org.eclipse.jetty', name: 'jetty-plus', version: jettyVersion compile group: 'org.eclipse.jetty', name: 'apache-jsp', version: jettyVersion compile group: 'org.ow2.asm', name: 'asm', version: '5.1' compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25' compile group: 'log4j', name: 'log4j', version: '1.2.17' ... } ...
That’s all. Hope this helps!
Here is the link to an working github project:
jetty-embedded-webannotations-gradle