diff --git a/skywalking-sdk-plugin/dubbo-plugin/pom.xml b/skywalking-sdk-plugin/dubbo-plugin/pom.xml
index 06c4403a3..6ed444ad7 100644
--- a/skywalking-sdk-plugin/dubbo-plugin/pom.xml
+++ b/skywalking-sdk-plugin/dubbo-plugin/pom.xml
@@ -1,121 +1,128 @@
-
- skywalking-sdk-plugin
- com.ai.cloud
- 1.0-SNAPSHOT
-
- 4.0.0
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ skywalking-sdk-plugin
+ com.ai.cloud
+ 1.0-SNAPSHOT
+
+ 4.0.0
- dubbo-plugin
- jar
+ dubbo-plugin
+ jar
- spring-plugin
- http://maven.apache.org
+ spring-plugin
+ http://maven.apache.org
-
- UTF-8
-
-
-
- Company nexus
- http://223.202.119.155:18081/nexus/content/groups/public/
-
-
+
+ UTF-8
+
+
+
+ Company nexus
+ http://10.1.228.199:18081/nexus/content/groups/public/
+
+
-
-
- com.ai.cloud
- skywalking-api
- ${project.version}
-
-
- com.ai.cloud
- skywalking-auth
- ${project.version}
- test
-
-
- com.ai.cloud
- skywalking-api
- ${project.version}
-
-
- org.springframework
- spring-context
- 3.0.0.RELEASE
- test
-
-
- org.jboss.resteasy
- resteasy-jaxrs
- 3.0.7.Final
- test
-
-
- org.jboss.resteasy
- resteasy-client
- 3.0.7.Final
- test
-
-
- javax.validation
- validation-api
- 1.0.0.GA
- test
-
-
- org.jboss.resteasy
- resteasy-jackson-provider
- 3.0.7.Final
- test
-
-
- org.apache.tomcat.embed
- tomcat-embed-core
- 8.0.11
- test
-
-
- org.apache.tomcat.embed
- tomcat-embed-logging-juli
- 8.0.11
- test
-
-
- javax.ws.rs
- javax.ws.rs-api
- 2.0
- test
-
-
- log4j
- log4j
- 1.2.17
- test
-
-
- com.101tec
- zkclient
- 0.7
- test
-
-
- com.alibaba
- dubbox
- 2.8.3
-
-
- org.apache.httpcomponents
- httpclient
- 4.5.1
- test
-
-
- com.alibaba
- dubbo
- 2.5.3
- compile
-
-
+
+
+ com.ai.cloud
+ skywalking-api
+ ${project.version}
+
+
+ com.ai.cloud
+ skywalking-auth
+ ${project.version}
+ test
+
+
+ com.ai.cloud
+ skywalking-api
+ ${project.version}
+
+
+ org.springframework
+ spring-context
+ 3.0.0.RELEASE
+ test
+
+
+ org.jboss.resteasy
+ resteasy-jaxrs
+ 3.0.7.Final
+ test
+
+
+ org.jboss.resteasy
+ resteasy-client
+ 3.0.7.Final
+ test
+
+
+ javax.validation
+ validation-api
+ 1.0.0.GA
+ test
+
+
+ org.jboss.resteasy
+ resteasy-jackson-provider
+ 3.0.7.Final
+ test
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-core
+ 8.0.11
+ test
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-logging-juli
+ 8.0.11
+ test
+
+
+ javax.ws.rs
+ javax.ws.rs-api
+ 2.0
+ test
+
+
+ log4j
+ log4j
+ 1.2.17
+ test
+
+
+ com.101tec
+ zkclient
+ 0.7
+ test
+
+
+ com.alibaba
+ dubbox
+ 2.8.3
+ compile
+
+
+
+
+
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.2.1
+ test
+
+
+ org.javassist
+ javassist
+ 3.20.0-GA
+ test
+
+
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/SWDubboEnhanceFilter.java b/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/SWDubboEnhanceFilter.java
index ed805da36..63582dc8d 100644
--- a/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/SWDubboEnhanceFilter.java
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/SWDubboEnhanceFilter.java
@@ -4,6 +4,8 @@ import com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointReceiver;
import com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointSender;
import com.ai.cloud.skywalking.model.ContextData;
import com.ai.cloud.skywalking.model.Identification;
+import com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.BugFixAcitve;
+import com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.SWBaseBean;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.*;
@@ -16,10 +18,17 @@ public class SWDubboEnhanceFilter implements Filter {
Result result = null;
if (isConsumer) {
RPCBuriedPointSender sender = new RPCBuriedPointSender();
+
ContextData contextData = sender.beforeSend(createIdentification(invoker, invocation));
- // 追加参数
- RpcInvocation rpcInvocation = (RpcInvocation) invocation;
- rpcInvocation.setAttachment("contextData", contextData.toString());
+ String contextDataStr = contextData.toString();
+
+ //追加参数
+ if (!BugFixAcitve.isActive) {
+ context.setAttachment("contextData", contextDataStr);
+ } else {
+ fix283SendNoAttachmentIssue(invocation, contextDataStr);
+ }
+
try {
//执行结果
result = invoker.invoke(invocation);
@@ -37,8 +46,14 @@ public class SWDubboEnhanceFilter implements Filter {
} else {
// 读取参数
RPCBuriedPointReceiver rpcBuriedPointReceiver = new RPCBuriedPointReceiver();
- RpcInvocation rpcInvocation = (RpcInvocation) invocation;
- String contextDataStr = rpcInvocation.getAttachment("contextData");
+ String contextDataStr;
+
+ if (!BugFixAcitve.isActive) {
+ contextDataStr = context.getAttachment("contextData");
+ } else {
+ contextDataStr = fix283RecvNoAttachmentIssue(invocation);
+ }
+
ContextData contextData = null;
if (contextDataStr != null && contextDataStr.length() > 0) {
contextData = new ContextData(contextDataStr);
@@ -83,4 +98,25 @@ public class SWDubboEnhanceFilter implements Filter {
viewPoint.append(")");
return Identification.newBuilder().viewPoint(viewPoint.toString()).spanType('D').build();
}
-}
+
+
+ private static void fix283SendNoAttachmentIssue(Invocation invocation, String contextDataStr) {
+
+ for (Object parameter : invocation.getArguments()) {
+ if (parameter instanceof SWBaseBean) {
+ ((SWBaseBean) parameter).setContextData(contextDataStr);
+ return;
+ }
+ }
+ }
+
+ private static String fix283RecvNoAttachmentIssue(Invocation invocation) {
+ for (Object parameter : invocation.getArguments()) {
+ if (parameter instanceof SWBaseBean) {
+ return ((SWBaseBean) parameter).getContextData();
+ }
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbox/bugfix/below283/BugFixAcitve.java b/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbox/bugfix/below283/BugFixAcitve.java
new file mode 100644
index 000000000..3477e8e9e
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbox/bugfix/below283/BugFixAcitve.java
@@ -0,0 +1,9 @@
+package com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283;
+
+public final class BugFixAcitve {
+ public static boolean isActive = false;
+
+ public BugFixAcitve(){
+ isActive = true;
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbox/bugfix/below283/SWBaseBean.java b/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbox/bugfix/below283/SWBaseBean.java
new file mode 100644
index 000000000..df571d378
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbox/bugfix/below283/SWBaseBean.java
@@ -0,0 +1,15 @@
+package com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283;
+
+import java.io.Serializable;
+
+public class SWBaseBean implements Serializable {
+ private String contextData;
+
+ public String getContextData() {
+ return contextData;
+ }
+
+ public void setContextData(String contextData) {
+ this.contextData = contextData;
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/consumer/DubboxRestConsumer.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/consumer/DubboxRestConsumer.java
deleted file mode 100644
index 73f8bd219..000000000
--- a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/consumer/DubboxRestConsumer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.ai.cloud.skywalking.plugin.test.dubbox.rest.consumer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-
-public class DubboxRestConsumer {
- private static final Log logger = LogFactory.getLog(DubboxRestConsumer.class);
-
- public static String sendPostRequest(String url, String data, Map header) throws IOException,
- URISyntaxException {
- CloseableHttpClient httpclient = HttpClients.createDefault();
- HttpPost httpPost = new HttpPost(new URL(url).toURI());
- for (Map.Entry entry : header.entrySet()) {
- httpPost.setHeader(entry.getKey(), entry.getValue());
- }
- StringEntity dataEntity = new StringEntity(data, ContentType.APPLICATION_JSON);
- httpPost.setEntity(dataEntity);
- CloseableHttpResponse response = httpclient.execute(httpPost);
- try {
- if (response.getStatusLine().getStatusCode() == 200) {
- HttpEntity entity = response.getEntity();
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- entity.getContent()));
- StringBuffer buffer = new StringBuffer();
- String tempStr;
- while ((tempStr = reader.readLine()) != null)
- buffer.append(tempStr);
- return buffer.toString();
- } else {
- throw new RuntimeException("error code " + response.getStatusLine().getStatusCode()
- + ":" + response.getStatusLine().getReasonPhrase());
- }
- } finally {
- response.close();
- httpclient.close();
- }
- }
-
- public static void main(String[] args) throws IOException, URISyntaxException {
- String url = "http://192.168.1.102:20880/skywalking/rest-a/doBusiness";
-
- String data = "{\"paramA\":\"BBBB\"}";
- sendPostRequest(url, data, new HashMap());
- }
-}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/impl/DubboxRestInterAImpl.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/impl/DubboxRestInterAImpl.java
deleted file mode 100644
index b5b92ad0a..000000000
--- a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/impl/DubboxRestInterAImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.ai.cloud.skywalking.plugin.test.dubbox.rest.impl;
-
-import com.ai.cloud.skywalking.plugin.test.dubbox.rest.interfaces.IDubboxRestInterA;
-import com.alibaba.dubbo.config.annotation.Service;
-
-@Service
-public class DubboxRestInterAImpl implements IDubboxRestInterA {
- public String doBusiness(String paramA) {
- System.out.println("param : " + paramA);
- return "{\"content\":\"" + paramA + "\"}";
- }
-}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/consumer/DubboxRestConsumer.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/consumer/DubboxRestConsumer.java
new file mode 100644
index 000000000..5b09502f2
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/consumer/DubboxRestConsumer.java
@@ -0,0 +1,24 @@
+package com.ai.cloud.skywalking.plugin.test.dubbox283.consumer;
+
+import com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.BugFixAcitve;
+import com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.IDubboxRestInterA;
+import com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.param.DubboxRestInterAParameter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+public class DubboxRestConsumer {
+ private static final Log logger = LogFactory.getLog(DubboxRestConsumer.class);
+
+ public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
+ new BugFixAcitve();
+ ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:consumer/dubbox283-consumer.xml");
+ IDubboxRestInterA dubboxRestInterA = context.getBean(IDubboxRestInterA.class);
+ dubboxRestInterA.doBusiness(new DubboxRestInterAParameter("AAAAA"));
+ Thread.sleep(10000000L);
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/impl/DubboxRestStart.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/consumer/DubboxRestStart.java
similarity index 69%
rename from skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/impl/DubboxRestStart.java
rename to skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/consumer/DubboxRestStart.java
index ebe03e616..867310d52 100644
--- a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/impl/DubboxRestStart.java
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/consumer/DubboxRestStart.java
@@ -1,12 +1,14 @@
-package com.ai.cloud.skywalking.plugin.test.dubbox.rest.impl;
+package com.ai.cloud.skywalking.plugin.test.dubbox283.consumer;
+import com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.BugFixAcitve;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DubboxRestStart {
public static void main(String[] args) throws InterruptedException {
+ new BugFixAcitve();
ClassPathXmlApplicationContext classPathXmlApplicationContext = new
- ClassPathXmlApplicationContext("classpath*:provider/dubbox-provider.xml");
+ ClassPathXmlApplicationContext("classpath*:provider/dubbox283-provider.xml");
classPathXmlApplicationContext.start();
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/impl/DubboxRestInterAImpl.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/impl/DubboxRestInterAImpl.java
new file mode 100644
index 000000000..7b955f9c3
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/impl/DubboxRestInterAImpl.java
@@ -0,0 +1,13 @@
+package com.ai.cloud.skywalking.plugin.test.dubbox283.impl;
+
+import com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.IDubboxRestInterA;
+import com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.param.DubboxRestInterAParameter;
+import com.alibaba.dubbo.config.annotation.Service;
+
+@Service
+public class DubboxRestInterAImpl implements IDubboxRestInterA {
+ public String doBusiness(DubboxRestInterAParameter paramA) {
+ System.out.println("param : " + paramA.getParameterA());
+ return "{\"content\":\"" + paramA.getParameterA() + "\"}";
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/interfaces/IDubboxRestInterA.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/interfaces/IDubboxRestInterA.java
new file mode 100644
index 000000000..34752c1b6
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/interfaces/IDubboxRestInterA.java
@@ -0,0 +1,20 @@
+package com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces;
+
+import com.ai.cloud.skywalking.plugin.test.dubbox283.impl.DubboxRestInterAImpl;
+import com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.param.DubboxRestInterAParameter;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+@Path("/rest-a")
+@Consumes({MediaType.APPLICATION_JSON})
+@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
+public interface IDubboxRestInterA {
+
+ @Path("/doBusiness")
+ @POST
+ String doBusiness(DubboxRestInterAParameter paramA);
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/interfaces/param/DubboxRestInterAParameter.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/interfaces/param/DubboxRestInterAParameter.java
new file mode 100644
index 000000000..98a1b86f0
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox283/interfaces/param/DubboxRestInterAParameter.java
@@ -0,0 +1,34 @@
+package com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.param;
+
+import com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.SWBaseBean;
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class DubboxRestInterAParameter extends SWBaseBean {
+
+
+ public DubboxRestInterAParameter() {
+ }
+
+ @XmlElement(name = "parameterA")
+ private String parameterA;
+
+ public DubboxRestInterAParameter(String parameterA) {
+ this.parameterA = parameterA;
+ }
+
+ public String getParameterA() {
+ return parameterA;
+ }
+
+ public void setParameterA(String parameterA) {
+ this.parameterA = parameterA;
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/consumer/DubboxRestConsumer.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/consumer/DubboxRestConsumer.java
new file mode 100644
index 000000000..69a6df1ae
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/consumer/DubboxRestConsumer.java
@@ -0,0 +1,22 @@
+package com.ai.cloud.skywalking.plugin.test.dubbox284.consumer;
+
+import com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.param.DubboxRestInterAParameter;
+import com.ai.cloud.skywalking.plugin.test.dubbox284.interfaces.IDubboxRestInterA;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+public class DubboxRestConsumer {
+ private static final Log logger = LogFactory.getLog(DubboxRestConsumer.class);
+
+ public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
+ ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:consumer/dubbox284-consumer.xml");
+ IDubboxRestInterA dubboxRestInterA = context.getBean(IDubboxRestInterA.class);
+ dubboxRestInterA.doBusiness(new DubboxRestInterAParameter("AAAAA"));
+ Thread.sleep(10000000L);
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/consumer/DubboxRestStart.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/consumer/DubboxRestStart.java
new file mode 100644
index 000000000..67af9c4e4
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/consumer/DubboxRestStart.java
@@ -0,0 +1,19 @@
+package com.ai.cloud.skywalking.plugin.test.dubbox284.consumer;
+
+import com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.BugFixAcitve;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class DubboxRestStart {
+
+ public static void main(String[] args) throws InterruptedException {
+ new BugFixAcitve();
+ ClassPathXmlApplicationContext classPathXmlApplicationContext = new
+ ClassPathXmlApplicationContext("classpath*:provider/dubbox284-provider.xml");
+
+ classPathXmlApplicationContext.start();
+
+ while (true) {
+ Thread.sleep(100000L);
+ }
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/impl/DubboxRestInterAImpl.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/impl/DubboxRestInterAImpl.java
new file mode 100644
index 000000000..470791939
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/impl/DubboxRestInterAImpl.java
@@ -0,0 +1,13 @@
+package com.ai.cloud.skywalking.plugin.test.dubbox284.impl;
+
+import com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.param.DubboxRestInterAParameter;
+import com.ai.cloud.skywalking.plugin.test.dubbox284.interfaces.IDubboxRestInterA;
+import com.alibaba.dubbo.config.annotation.Service;
+
+@Service
+public class DubboxRestInterAImpl implements IDubboxRestInterA {
+ public String doBusiness(DubboxRestInterAParameter paramA) {
+ System.out.println("param : " + paramA.getParameterA());
+ return "{\"content\":\"" + paramA.getParameterA() + "\"}";
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/interfaces/IDubboxRestInterA.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/interfaces/IDubboxRestInterA.java
similarity index 60%
rename from skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/interfaces/IDubboxRestInterA.java
rename to skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/interfaces/IDubboxRestInterA.java
index 8e63920e8..5523240b9 100644
--- a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox/rest/interfaces/IDubboxRestInterA.java
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/interfaces/IDubboxRestInterA.java
@@ -1,4 +1,6 @@
-package com.ai.cloud.skywalking.plugin.test.dubbox.rest.interfaces;
+package com.ai.cloud.skywalking.plugin.test.dubbox284.interfaces;
+
+import com.ai.cloud.skywalking.plugin.test.dubbox283.interfaces.param.DubboxRestInterAParameter;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
@@ -13,5 +15,5 @@ public interface IDubboxRestInterA {
@Path("/doBusiness")
@POST
- String doBusiness(String paramA);
+ String doBusiness(DubboxRestInterAParameter paramA);
}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/interfaces/param/DubboxRestInterAParameter.java b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/interfaces/param/DubboxRestInterAParameter.java
new file mode 100644
index 000000000..206c64440
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/java/com/ai/cloud/skywalking/plugin/test/dubbox284/interfaces/param/DubboxRestInterAParameter.java
@@ -0,0 +1,32 @@
+package com.ai.cloud.skywalking.plugin.test.dubbox284.interfaces.param;
+
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class DubboxRestInterAParameter {
+
+ public DubboxRestInterAParameter() {
+ }
+
+ @XmlElement(name = "parameterA")
+ private String parameterA;
+
+ public DubboxRestInterAParameter(String parameterA) {
+ this.parameterA = parameterA;
+ }
+
+ public String getParameterA() {
+ return parameterA;
+ }
+
+ public void setParameterA(String parameterA) {
+ this.parameterA = parameterA;
+ }
+}
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbo-consumer.xml b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbo-consumer.xml
index 60dffa7ad..61f1dfd32 100644
--- a/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbo-consumer.xml
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbo-consumer.xml
@@ -8,6 +8,7 @@
-
+
\ No newline at end of file
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbox283-consumer.xml b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbox283-consumer.xml
new file mode 100644
index 000000000..1f250e20a
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbox283-consumer.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbox284-consumer.xml b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbox284-consumer.xml
new file mode 100644
index 000000000..3ff101b44
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/consumer/dubbox284-consumer.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox-provider.xml b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox283-provider.xml
similarity index 77%
rename from skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox-provider.xml
rename to skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox283-provider.xml
index 570b4671c..5beb68624 100644
--- a/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox-provider.xml
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox283-provider.xml
@@ -7,9 +7,10 @@
-
+
-
-
+
+
\ No newline at end of file
diff --git a/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox284-provider.xml b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox284-provider.xml
new file mode 100644
index 000000000..43f413314
--- /dev/null
+++ b/skywalking-sdk-plugin/dubbo-plugin/src/test/resources/provider/dubbox284-provider.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file