diff --git a/skywalking-sdk-plugin/web-plugin/pom.xml b/skywalking-sdk-plugin/web-plugin/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..e9113101b01868846a72a9dab0a697e168d02adb --- /dev/null +++ b/skywalking-sdk-plugin/web-plugin/pom.xml @@ -0,0 +1,39 @@ + + + skywalking-sdk-plugin + com.ai.cloud + 1.0-SNAPSHOT + + 4.0.0 + + web-plugin + jar + + spring-plugin + http://maven.apache.org + + + UTF-8 + + + + + com.ai.cloud + skywalking-api + ${project.version} + + + com.ai.cloud + skywalking-auth + ${project.version} + test + + + javax.servlet + javax.servlet-api + 3.0.1 + compile + + + diff --git a/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java b/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..1f247a2a9bfac287cb85744cbb06280b9471de05 --- /dev/null +++ b/skywalking-sdk-plugin/web-plugin/src/main/java/com/ai/cloud/skywalking/plugin/web/SkyWalkingFilter.java @@ -0,0 +1,56 @@ +package com.ai.cloud.skywalking.plugin.web; + + +import com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointReceiver; +import com.ai.cloud.skywalking.model.ContextData; +import com.ai.cloud.skywalking.model.Identification; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + +public class SkyWalkingFilter implements Filter { + + private String tracingName; + private static final String DEFAULT_TRACE_NAME = "SkyWalking-TRACING-NAME"; + + public void init(FilterConfig filterConfig) throws ServletException { + tracingName = filterConfig.getInitParameter("tracing-name"); + if (tracingName == null || tracingName.length() <= 0) { + tracingName = DEFAULT_TRACE_NAME; + } + } + + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + RPCBuriedPointReceiver receiver = null; + try { + HttpServletRequest request = (HttpServletRequest) servletRequest; + String contextDataStr = request.getHeader(tracingName); + ContextData contextData = null; + if (contextDataStr != null && contextDataStr.length() > 0) { + contextData = new ContextData(contextDataStr); + } + receiver = new RPCBuriedPointReceiver(); + receiver.beforeReceived(contextData, generateIdentification(request)); + filterChain.doFilter(servletRequest, servletResponse); + } catch (Throwable e) { + receiver.handleException(e); + throw new ServletException(e); + } finally { + receiver.afterReceived(); + } + + } + + + private Identification generateIdentification(HttpServletRequest request) { + return Identification.newBuilder() + .viewPoint(request.getRequestURL().toString()) + .spanType('W') + .build(); + } + + public void destroy() { + // do-nothing + } +}