diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/biz/model/ReturnT.java b/xxl-job-core/src/main/java/com/xxl/job/core/biz/model/ReturnT.java index 83d7a361..2eb422ca 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/biz/model/ReturnT.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/biz/model/ReturnT.java @@ -12,6 +12,7 @@ public class ReturnT implements Serializable { public static final int SUCCESS_CODE = 200; public static final int FAIL_CODE = 500; + public static final int METHOD_NOT_ALLOWED = 405; public static final ReturnT SUCCESS = new ReturnT(null); public static final ReturnT FAIL = new ReturnT(FAIL_CODE, null); diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java b/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java index 540e0ea2..b8732fc0 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java @@ -156,16 +156,24 @@ public class EmbedServer { public void run() { // do invoke Object responseObj = process(httpMethod, uri, requestData, accessTokenReq); - + HttpResponseStatus status = resolveHttpStatus(responseObj); // to json String responseJson = GsonTool.toJson(responseObj); - // write response - writeResponse(ctx, keepAlive, responseJson); + writeResponse(ctx, keepAlive, status, responseJson); } }); } + private HttpResponseStatus resolveHttpStatus(Object responseObj) { + if (responseObj instanceof ReturnT) { + ReturnT returnT = (ReturnT) responseObj; + return returnT.getCode() == ReturnT.METHOD_NOT_ALLOWED ? HttpResponseStatus.METHOD_NOT_ALLOWED : HttpResponseStatus.OK; + } else { + return HttpResponseStatus.OK; + } + } + private Object process(HttpMethod httpMethod, String uri, String requestData, String accessTokenReq) { // valid if (HttpMethod.POST != httpMethod) { @@ -209,9 +217,9 @@ public class EmbedServer { /** * write response */ - private void writeResponse(ChannelHandlerContext ctx, boolean keepAlive, String responseJson) { + private void writeResponse(ChannelHandlerContext ctx, boolean keepAlive, HttpResponseStatus status, String responseJson) { // write response - FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.copiedBuffer(responseJson, CharsetUtil.UTF_8)); // Unpooled.wrappedBuffer(responseJson) + FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, Unpooled.copiedBuffer(responseJson, CharsetUtil.UTF_8)); // Unpooled.wrappedBuffer(responseJson) response.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/html;charset=UTF-8"); // HttpHeaderValues.TEXT_PLAIN.toString() response.headers().set(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes()); if (keepAlive) {