Skip to content

Commit 57da3b7

Browse files
committed
Fix #51
1 parent 8cdad0a commit 57da3b7

File tree

1 file changed

+63
-1
lines changed

1 file changed

+63
-1
lines changed

_posts/2015-03-17-server.md

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Simple set the `server.port` variable from your `src\main\resources\main\conf\ap
4848
server.port = 8081
4949
```
5050

51-
Pippo detects automatically the template engine using __ServiceLocator__.
51+
Pippo detects automatically the template engine using __ServiceLoader__.
5252
Pippo comes (out of the box) with some web servers:
5353

5454
- [Jetty](http://eclipse.org/jetty) `pippo-jetty`
@@ -142,4 +142,66 @@ public class Main {
142142
}
143143
```
144144

145+
The `WebServer` abstraction allows you to add a `Servlet`, `Filter` or `ServletContextListener` in any supported servlet container
146+
via `addListener(Class<? extends ServletContextListener> listener)` method.
147+
For the same task but more modular you can use `WebServerInitializer`.
148+
Below I present you a code snippet that add a servlet to Pippo:
145149

150+
``` java
151+
import org.kohsuke.MetaInfServices;
152+
import org.slf4j.Logger;
153+
import org.slf4j.LoggerFactory;
154+
import ro.pippo.core.WebServerInitializer;
155+
156+
import javax.servlet.ServletContext;
157+
import javax.servlet.ServletRegistration;
158+
159+
@MetaInfServices
160+
public class ServletAppender implements WebServerInitializer {
161+
162+
private static final Logger log = LoggerFactory.getLogger(ServletAppender.class);
163+
164+
@Override
165+
public void init(ServletContext servletContext) {
166+
ServletRegistration.Dynamic demoServlet = servletContext.addServlet("demo", DemoServlet.class);
167+
demoServlet.setLoadOnStartup(1);
168+
demoServlet.addMapping("/demo");
169+
// other possible settings for demoServlet
170+
171+
log.debug("Added servlet '{}' to '{}'", demoServlet.getClassName(), demoServlet.getMappings().iterator().next());
172+
}
173+
174+
@Override
175+
public void destroy(ServletContext servletContext) {
176+
// do nothing
177+
}
178+
179+
}
180+
```
181+
182+
``` java
183+
import ro.pippo.core.Pippo;
184+
185+
import static ro.pippo.core.route.Route.GET;
186+
187+
public class ServletDemo {
188+
189+
public static void main(String[] args) {
190+
Pippo pippo = new Pippo();
191+
192+
// set pippo filter path
193+
pippo.getServer().setPippoFilterPath("/app/*");
194+
195+
// add route
196+
pippo.GET("/", routeContext -> routeContext.send("Hello from Pippo route!"));
197+
198+
pippo.start();
199+
}
200+
201+
}
202+
```
203+
DON'T forget to add `@MetaInfServices` on your implementation of `WebServerInitializer`!
204+
The full code is available in [pippo-demo-servlet](({{ site.demourl }}/pippo-demo-servlet)) project.
205+
206+
A more complex demo project that shows you how to integrate [Jersey](https://jersey.java.net) is available in [pippo-demo-jersey](({{ site.demourl }}/pippo-demo-jersey)) project.
207+
This demo is the code source of the article `Pippo and Jersey (JAX-RS): A Match Made in Heaven` available on [DZone](https://dzone.com/articles/pippo-and-jersey-jax-rs).

0 commit comments

Comments
 (0)