catch unknown message type error

This commit is contained in:
gongdewei
2020-08-04 19:42:41 +08:00
parent 3dfaf426c0
commit f18f6b1495
3 changed files with 28 additions and 8 deletions
@@ -4,8 +4,9 @@ option java_multiple_files = true;
package com.alibaba.arthas.channel.proto;
message StatusResult {
int32 statusCode = 1;
string message = 2;
string type = 1;
sint32 statusCode = 2;
string message = 3;
}
message SystemEnvResult {
@@ -16,4 +17,10 @@ message SystemEnvResult {
message VersionResult {
string type = 1;
string version = 2;
}
message SessionResult {
string type = 1;
int64 javaPid = 2;
string sessionId = 3;
}
@@ -9,6 +9,7 @@ import com.alibaba.arthas.channel.proto.ExecuteParams;
import com.alibaba.arthas.channel.proto.ExecuteResult;
import com.alibaba.arthas.channel.proto.GeneralResult;
import com.alibaba.arthas.channel.proto.ResponseStatus;
import com.alibaba.arthas.channel.proto.SessionResult;
import com.alibaba.arthas.channel.proto.StatusResult;
import com.alibaba.arthas.channel.proto.SystemEnvResult;
import com.alibaba.arthas.channel.proto.VersionResult;
@@ -161,6 +162,10 @@ public class ArthasServiceAcquireRequestTest {
.setStatusCode(0)
.build()));
} else {
results.add(Any.pack(SessionResult.newBuilder()
.setJavaPid(1923)
.setSessionId("sessionId-222")
.build()));
results.add(Any.pack(StatusResult.newBuilder()
.setStatusCode(-1)
.setMessage("Not supported command")
@@ -162,15 +162,21 @@ public class ArthasServiceServerTest {
executeResult.getJobId();
executeResult.getJobStatus();
List<Any> resultsList = executeResult.getResultsList();
try {
for (Any result : resultsList) {
String clazzName = result.getTypeUrl().split("/")[1];
for (Any result : resultsList) {
String clazzName = result.getTypeUrl().split("/")[1];;
Message resultMessage = null;
//catch unknown message type error
try {
Class<Message> resultClass = (Class<Message>) Class.forName(clazzName);
Message resultMessage = result.unpack(resultClass);
resultMessage = result.unpack(resultClass);
} catch (Throwable e) {
System.out.println("parse result failure, clazzName: " + clazzName +", error: " + e.toString());
e.printStackTrace();
}
if (resultMessage != null) {
handleResultMessage(resultMessage);
}
} catch (Exception e) {
e.printStackTrace();
}
}
try {
@@ -238,6 +244,8 @@ public class ArthasServiceServerTest {
}
private static void handleResultMessage(Message resultMessage) {
System.out.println("result message: "+resultMessage.getClass().getName());
}
}