diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java index c09372faf1237942453bb9572163bf0157e06478..e5246864b05bb2521dabe54cc5ec2a378f97a9f9 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java @@ -1,7 +1,8 @@ package org.skywalking.apm.plugin.resin.v3; -import com.caucho.server.http.HttpResponse; +import com.caucho.server.connection.CauchoRequest; import com.caucho.server.http.HttpRequest; +import com.caucho.server.http.HttpResponse; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.plugin.interceptor.EnhancedClassInstanceContext; @@ -33,13 +34,13 @@ public class ResinV3Interceptor implements InstanceMethodsAroundInterceptor { public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, MethodInterceptResult result) { Object[] args = interceptorContext.allArguments(); - HttpRequest request = (HttpRequest)args[0]; - Span span = ContextManager.createSpan(request.getRequestURI()); + CauchoRequest request = (CauchoRequest)args[0]; + Span span = ContextManager.createSpan(request.getPageURI()); Tags.COMPONENT.set(span, RESIN_COMPONENT); Tags.PEER_HOST.set(span, request.getServerName()); Tags.PEER_PORT.set(span, request.getServerPort()); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER); - Tags.URL.set(span, request.getRequestURL().toString()); + Tags.URL.set(span, appendRequestURL(request)); Tags.SPAN_LAYER.asHttp(span); String tracingHeaderValue = request.getHeader(HEADER_NAME_OF_CONTEXT_DATA); @@ -48,6 +49,23 @@ public class ResinV3Interceptor implements InstanceMethodsAroundInterceptor { } } + /** + * Append request URL. + * + * @param request + * @return + */ + private String appendRequestURL(CauchoRequest request) { + StringBuffer sb = new StringBuffer(); + sb.append(request.getScheme()); + sb.append("://"); + sb.append(request.getServerName()); + sb.append(":"); + sb.append(request.getServerPort()); + sb.append(request.getPageURI()); + return sb.toString(); + } + @Override public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java index 35e61448de7d3ac28e214359a5f232a9b65f2f1d..74eac366863577fe11044de4cd35941188b3b40d 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java @@ -1,7 +1,7 @@ package org.skywalking.apm.plugin.resin.v3; +import com.caucho.server.connection.CauchoRequest; import com.caucho.server.http.HttpResponse; -import com.caucho.server.http.HttpRequest; import org.hamcrest.CoreMatchers; import org.junit.After; import org.junit.Before; @@ -39,7 +39,7 @@ public class ResinV3InterceptorTest { private MockTracerContextListener contextListener; @Mock - private HttpRequest request; + private CauchoRequest request; @Mock private HttpResponse response; @Mock @@ -59,7 +59,10 @@ public class ResinV3InterceptorTest { TracerContext.ListenerManager.add(contextListener); - when(request.getRequestURI()).thenReturn("/test/testRequestURL"); + when(request.getPageURI()).thenReturn("/test/testRequestURL"); + when(request.getScheme()).thenReturn("http"); + when(request.getServerName()).thenReturn("localhost"); + when(request.getServerPort()).thenReturn(8080); when(request.getRequestURL()).thenReturn(new StringBuffer("http://localhost:8080/test/testRequestURL")); when(response.getStatusCode()).thenReturn(200); when(methodInvokeContext.allArguments()).thenReturn(new Object[] {request, response}); diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java index 1e9aac5ec22a872429fd0396dbcda7817ad53669..de04a3837751f44451180bc41a72d12329438f3f 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java @@ -1,8 +1,8 @@ package org.skywalking.apm.plugin.resin.v4; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import com.caucho.server.http.CauchoRequest; import com.caucho.server.http.HttpRequest; +import javax.servlet.http.HttpServletResponse; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.plugin.interceptor.EnhancedClassInstanceContext; @@ -31,13 +31,13 @@ public class ResinV4Interceptor implements InstanceMethodsAroundInterceptor { public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, MethodInterceptResult result) { Object[] args = interceptorContext.allArguments(); - HttpServletRequest request = (HttpServletRequest)args[0]; - Span span = ContextManager.createSpan(request.getRequestURI()); + CauchoRequest request = (CauchoRequest)args[0]; + Span span = ContextManager.createSpan(request.getPageURI()); Tags.COMPONENT.set(span, RESIN_COMPONENT); Tags.PEER_HOST.set(span, request.getServerName()); Tags.PEER_PORT.set(span, request.getServerPort()); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER); - Tags.URL.set(span, request.getRequestURL().toString()); + Tags.URL.set(span, appendRequestURL(request)); Tags.SPAN_LAYER.asHttp(span); String tracingHeaderValue = request.getHeader(HEADER_NAME_OF_CONTEXT_DATA); @@ -46,6 +46,23 @@ public class ResinV4Interceptor implements InstanceMethodsAroundInterceptor { } } + /** + * Append request URL. + * + * @param request + * @return + */ + private String appendRequestURL(CauchoRequest request) { + StringBuffer sb = new StringBuffer(); + sb.append(request.getScheme()); + sb.append("://"); + sb.append(request.getServerName()); + sb.append(":"); + sb.append(request.getServerPort()); + sb.append(request.getPageURI()); + return sb.toString(); + } + @Override public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java index 63d1dc0e4606c904bde1731bcc3b7f7d7c2250f4..c1dd0c026d51973626f10f030f0feada95a86bab 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java @@ -1,6 +1,7 @@ package org.skywalking.apm.plugin.resin.v4; -import javax.servlet.http.HttpServletRequest; +import com.caucho.server.http.CauchoRequest; +import javax.servlet.http.HttpServletResponse; import org.hamcrest.CoreMatchers; import org.junit.After; import org.junit.Before; @@ -20,7 +21,6 @@ import org.skywalking.apm.trace.Span; import org.skywalking.apm.trace.TraceSegment; import org.skywalking.apm.trace.TraceSegmentRef; import org.skywalking.apm.trace.tag.Tags; -import javax.servlet.http.HttpServletResponse; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; @@ -37,7 +37,7 @@ public class ResinV4InterceptorTest { private MockTracerContextListener contextListener; @Mock - private HttpServletRequest request; + private CauchoRequest request; @Mock private HttpServletResponse response; @Mock @@ -57,6 +57,10 @@ public class ResinV4InterceptorTest { TracerContext.ListenerManager.add(contextListener); + when(request.getPageURI()).thenReturn("/test/testRequestURL"); + when(request.getScheme()).thenReturn("http"); + when(request.getServerName()).thenReturn("localhost"); + when(request.getServerPort()).thenReturn(8080); when(request.getRequestURI()).thenReturn("/test/testRequestURL"); when(request.getRequestURL()).thenReturn(new StringBuffer("http://localhost:8080/test/testRequestURL")); when(response.getStatus()).thenReturn(200);