1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package com.xxl.job.admin.controller;
- import com.xxl.job.admin.controller.annotation.PermessionLimit;
- import com.xxl.job.core.rpc.codec.RpcRequest;
- import com.xxl.job.core.rpc.codec.RpcResponse;
- import com.xxl.job.core.rpc.netcom.NetComServerFactory;
- import com.xxl.job.core.rpc.serialize.HessianSerializer;
- import com.xxl.job.core.util.HttpClientUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.io.OutputStream;
- /**
- * Created by xuxueli on 17/5/10.
- */
- @Controller
- public class JobApiController {
- private static Logger logger = LoggerFactory.getLogger(JobApiController.class);
- private RpcResponse doInvoke(HttpServletRequest request) {
- try {
- // deserialize request
- byte[] requestBytes = HttpClientUtil.readBytes(request);
- if (requestBytes == null || requestBytes.length==0) {
- RpcResponse rpcResponse = new RpcResponse();
- rpcResponse.setError("RpcRequest byte[] is null");
- return rpcResponse;
- }
- RpcRequest rpcRequest = (RpcRequest) HessianSerializer.deserialize(requestBytes, RpcRequest.class);
- // invoke
- RpcResponse rpcResponse = NetComServerFactory.invokeService(rpcRequest, null);
- return rpcResponse;
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- RpcResponse rpcResponse = new RpcResponse();
- rpcResponse.setError("Server-error:" + e.getMessage());
- return rpcResponse;
- }
- }
- @RequestMapping("/api")
- @PermessionLimit(limit=false)
- public void api(HttpServletRequest request, HttpServletResponse response) throws IOException {
- // invoke
- RpcResponse rpcResponse = doInvoke(request);
- // serialize response
- byte[] responseBytes = HessianSerializer.serialize(rpcResponse);
- response.setContentType("text/html;charset=utf-8");
- response.setStatus(HttpServletResponse.SC_OK);
- //baseRequest.setHandled(true);
- OutputStream out = response.getOutputStream();
- out.write(responseBytes);
- out.flush();
- }
- }
|