Skip to content
This repository was archived by the owner on Dec 23, 2023. It is now read-only.

Commit 79e1644

Browse files
authored
update readme file with example for http servlet instrumentation. (#1672)
1 parent f692aae commit 79e1644

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

contrib/http_servlet/README.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,100 @@ compile 'io.opencensus:opencensus-api:0.19.0'
3131
compile 'io.opencensus:opencensus-contrib-http-servlet:0.19.0'
3232
```
3333

34+
## Instrumenting HTTP Servlets
35+
36+
Users can instrument Http Servlets by simply adding OcHttpServletFilter.class to your servlet filter.
37+
38+
Below is an example of how a servlet is instrumented.
39+
40+
```java
41+
42+
import io.opencensus.contrib.http.servlet.OcHttpServletFilter;
43+
import io.opencensus.contrib.http.util.HttpViews;
44+
import io.opencensus.exporter.stats.prometheus.PrometheusStatsCollector;
45+
import io.opencensus.exporter.trace.logging.LoggingTraceExporter;
46+
import io.prometheus.client.exporter.HTTPServer;
47+
import java.io.IOException;
48+
import java.io.PrintWriter;
49+
import java.util.EnumSet;
50+
import javax.servlet.DispatcherType;
51+
import javax.servlet.ServletException;
52+
import javax.servlet.http.HttpServlet;
53+
import javax.servlet.http.HttpServletRequest;
54+
import javax.servlet.http.HttpServletResponse;
55+
import org.eclipse.jetty.server.Request;
56+
import org.eclipse.jetty.server.Server;
57+
import org.eclipse.jetty.server.handler.AbstractHandler;
58+
import org.eclipse.jetty.servlet.ServletContextHandler;
59+
import org.eclipse.jetty.servlet.ServletHandler;
60+
61+
public class HelloWorldServer extends AbstractHandler {
62+
63+
public static class HelloServlet extends HttpServlet {
64+
private static final long serialVersionUID = 1L;
65+
66+
@Override
67+
protected void doGet(HttpServletRequest request, HttpServletResponse response)
68+
throws ServletException, IOException {
69+
PrintWriter pout = response.getWriter();
70+
71+
pout.print("<html><body><h3>Hello Servlet Get</h3></body></html>");
72+
return;
73+
}
74+
75+
@Override
76+
protected void doPost(HttpServletRequest request, HttpServletResponse response)
77+
throws ServletException, IOException {
78+
79+
PrintWriter pout = response.getWriter();
80+
pout.print("<html><body><h3>Hello Servlet Post</h3></body></html>");
81+
return;
82+
}
83+
}
84+
85+
public void handle(
86+
String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
87+
throws IOException, ServletException {
88+
response.setContentType("text/html;charset=utf-8");
89+
response.setStatus(HttpServletResponse.SC_OK);
90+
baseRequest.setHandled(true);
91+
response.getWriter().println("<h1>Hello World. default handle</h1>");
92+
}
93+
94+
private static void initStatsExporter() throws IOException {
95+
HttpViews.registerAllServerViews();
96+
97+
// Register stats exporter to a desired backend.
98+
PrometheusStatsCollector.createAndRegister();
99+
HTTPServer prometheusServer = new HTTPServer(9090, true);
100+
}
101+
102+
private static void initTracing() {
103+
// Register trace exporter to a desired backend.
104+
LoggingTraceExporter.register();
105+
}
106+
107+
public static void main(String[] args) throws Exception {
108+
initTracing();
109+
initStatsExporter();
110+
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
111+
context.setContextPath("/");
112+
113+
Server server = new Server(8080);
114+
ServletHandler handler = new ServletHandler();
115+
server.setHandler(handler);
116+
117+
// Add OcHttpServletFilter to enable tracing and monitoring stats.
118+
handler.addFilterWithMapping(
119+
OcHttpServletFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
120+
handler.addServletWithMapping(HelloServlet.class, "/*");
121+
122+
server.start();
123+
server.join();
124+
}
125+
}
126+
```
127+
34128
[travis-image]: https://travis-ci.org/census-instrumentation/opencensus-java.svg?branch=master
35129
[travis-url]: https://travis-ci.org/census-instrumentation/opencensus-java
36130
[appveyor-image]: https://ci.appveyor.com/api/projects/status/hxthmpkxar4jq4be/branch/master?svg=true

0 commit comments

Comments
 (0)