private Processor createProcessor(ServerConfig serverCfg) throws TarsException { Processor processor = null; Class<? extends Processor> processorClass = skeleton.getProcessorClass(); if (processorClass == null) { return new TarsServantProcessor(); } if (processorClass != null) { Constructor<? extends Processor> constructor; try { constructor = processorClass.getConstructor(new Class[] { ServantAdapter.class }); processor = constructor.newInstance(this); } catch (Exception e) { throw new TarsException("error occurred on create codec, codec=" + processorClass.getName()); } } return processor; }
public static void printServiceFlowLog(Logger logger, TarsServantRequest request, int status, long cost, String remark) { if (status == TarsHelper.SERVERSUCCESS && !isFlowLogEnable()) return; StringBuilder sb = new StringBuilder(); Object args[] = request.getMethodParameters(); int len = 25; sb.append(FLOW_SEP_FLAG); sb.append(request.getIoSession().getRemoteIp()).append(FLOW_SEP_FLAG); sb.append(request.getFunctionName()).append(FLOW_SEP_FLAG); if (null != args) { StringBuilder sbArgs = new StringBuilder(); for (int i = 0; i < args.length; i++) { if (args[i] == null) { sbArgs.append("NULL").append(","); } else if (args[i] instanceof Number || args[i] instanceof Boolean) { sbArgs.append(args[i]).append(","); } else { sbArgs.append(encodeStringParam(args[i].toString(), len)).append(","); } } sbArgs = sbArgs.length() >= 1 ? sbArgs.deleteCharAt(sbArgs.length() - 1) : sbArgs; sb.append(sbArgs); } sb.append(FLOW_SEP_FLAG); sb.append(status).append(FLOW_SEP_FLAG).append(cost); sb.append(FLOW_SEP_FLAG).append(remark); logger.info(sb.toString()); }
public void preInvokeSkeleton() { DistributedContext distributedContext = DistributedContextManager.getDistributedContext(); Request request = distributedContext.get(DyeingSwitch.REQ); if (request instanceof TarsServantRequest) { TarsServantRequest tarsServantRequest = (TarsServantRequest) request; initDyeing(tarsServantRequest); } }
oldClassLoader = Thread.currentThread().getContextClassLoader(); request = (TarsServantRequest) req; response = createResponse(request, session); response.setTicketNumber(req.getTicketNumber()); preInvokeSkeleton(); skeleton = appContext.getCapHomeSkeleton(request.getServantName()); if (skeleton == null) printServiceFlowLog(flowLogger, request, response.getRet(), (System.currentTimeMillis() - startTime), remark); postInvokeSkeleton(); OmServiceMngr.getInstance().reportWaitingTimeProperty(waitingTime); reportServerStat(request, response, startTime);
public void writeException(Throwable ex) throws IOException { TarsServantResponse response = this.context.response(); response.setRet(TarsHelper.SERVERUNKNOWNERR); response.setCause(ex); response.setResult(null); response.asyncCallEnd(); getCapHomeSkeleton().postInvokeCapHomeSkeleton(); Long startTime = this.context.getAttribute(Context.INTERNAL_START_TIME); TarsServantProcessor.printServiceFlowLog(flowLogger, this.context.request(), response.getRet(), (System.currentTimeMillis() - startTime.longValue()), ex.toString()); }
@Override public Response process(Request request, Session session) { Response response = null; if (request instanceof TarsServantRequest) { response = processor.process(request, session); } else { throw new IllegalArgumentException("unknown request type."); } return response; } }
private void reportServerStat(TarsServantRequest request, TarsServantResponse response, long startTime) { if (request.getVersion() == TarsHelper.VERSION2 || request.getVersion() == TarsHelper.VERSION3) { reportServerStat(Constants.TARS_TUP_CLIENT, request, response, startTime); } else if (request.getMessageType() == TarsHelper.ONEWAY) { reportServerStat(Constants.TARS_ONE_WAY_CLIENT, request, response, startTime); } }
oldClassLoader = Thread.currentThread().getContextClassLoader(); request = (TarsServantRequest) req; response = createResponse(request, session); response.setTicketNumber(req.getTicketNumber()); preInvokeSkeleton(); skeleton = appContext.getCapHomeSkeleton(request.getServantName()); if (skeleton == null) printServiceFlowLog(flowLogger, request, response.getRet(), (System.currentTimeMillis() - startTime), remark); postInvokeSkeleton(); OmServiceMngr.getInstance().reportWaitingTimeProperty(waitingTime); reportServerStat(request, response, startTime);
public void writeException(Throwable ex) throws IOException { TarsServantResponse response = this.context.response(); response.setRet(TarsHelper.SERVERUNKNOWNERR); response.setCause(ex); response.setResult(null); response.asyncCallEnd(); getCapHomeSkeleton().postInvokeCapHomeSkeleton(); Long startTime = this.context.getAttribute(Context.INTERNAL_START_TIME); TarsServantProcessor.printServiceFlowLog(flowLogger, this.context.request(), response.getRet(), (System.currentTimeMillis() - startTime.longValue()), ex.toString()); }
@Override public Response process(Request request, Session session) { Response response = null; if (request instanceof TarsServantRequest) { response = processor.process(request, session); } else { throw new IllegalArgumentException("unknown request type."); } return response; } }
private void reportServerStat(TarsServantRequest request, TarsServantResponse response, long startTime) { if (request.getVersion() == TarsHelper.VERSION2 || request.getVersion() == TarsHelper.VERSION3) { reportServerStat(Constants.TARS_TUP_CLIENT, request, response, startTime); } else if (request.getMessageType() == TarsHelper.ONEWAY) { reportServerStat(Constants.TARS_ONE_WAY_CLIENT, request, response, startTime); } }
public static void printServiceFlowLog(Logger logger, TarsServantRequest request, int status, long cost, String remark) { if (status == TarsHelper.SERVERSUCCESS && !isFlowLogEnable()) return; StringBuilder sb = new StringBuilder(); Object args[] = request.getMethodParameters(); int len = 25; sb.append(FLOW_SEP_FLAG); sb.append(request.getIoSession().getRemoteIp()).append(FLOW_SEP_FLAG); sb.append(request.getFunctionName()).append(FLOW_SEP_FLAG); if (null != args) { StringBuilder sbArgs = new StringBuilder(); for (int i = 0; i < args.length; i++) { if (args[i] == null) { sbArgs.append("NULL").append(","); } else if (args[i] instanceof Number || args[i] instanceof Boolean) { sbArgs.append(args[i]).append(","); } else { sbArgs.append(encodeStringParam(args[i].toString(), len)).append(","); } } sbArgs = sbArgs.length() >= 1 ? sbArgs.deleteCharAt(sbArgs.length() - 1) : sbArgs; sb.append(sbArgs); } sb.append(FLOW_SEP_FLAG); sb.append(status).append(FLOW_SEP_FLAG).append(cost); sb.append(FLOW_SEP_FLAG).append(remark); logger.info(sb.toString()); }
public void writeResult(Object result) throws IOException { TarsServantResponse response = this.context.response(); response.setRet(TarsHelper.SERVERSUCCESS); response.setCause(null); response.setResult(result); response.asyncCallEnd(); getCapHomeSkeleton().postInvokeCapHomeSkeleton(); Long startTime = this.context.getAttribute(Context.INTERNAL_START_TIME); TarsServantProcessor.printServiceFlowLog(flowLogger, this.context.request(), response.getRet(), (System.currentTimeMillis() - startTime.longValue()), ""); } }
private Processor createProcessor(ServerConfig serverCfg) throws TarsException { Processor processor = null; Class<? extends Processor> processorClass = skeleton.getProcessorClass(); if (processorClass == null) { return new TarsServantProcessor(); } if (processorClass != null) { Constructor<? extends Processor> constructor; try { constructor = processorClass.getConstructor(new Class[] { ServantAdapter.class }); processor = constructor.newInstance(this); } catch (Exception e) { throw new TarsException("error occurred on create codec, codec=" + processorClass.getName()); } } return processor; }
public void preInvokeSkeleton() { DistributedContext distributedContext = DistributedContextManager.getDistributedContext(); Request request = distributedContext.get(DyeingSwitch.REQ); if (request instanceof TarsServantRequest) { TarsServantRequest tarsServantRequest = (TarsServantRequest) request; initDyeing(tarsServantRequest); } }
public void writeResult(Object result) throws IOException { TarsServantResponse response = this.context.response(); response.setRet(TarsHelper.SERVERSUCCESS); response.setCause(null); response.setResult(result); response.asyncCallEnd(); getCapHomeSkeleton().postInvokeCapHomeSkeleton(); Long startTime = this.context.getAttribute(Context.INTERNAL_START_TIME); TarsServantProcessor.printServiceFlowLog(flowLogger, this.context.request(), response.getRet(), (System.currentTimeMillis() - startTime.longValue()), ""); } }
public void bind() throws IOException { ServerConfig serverCfg = ConfigurationManager.getInstance().getServerConfig(); boolean keepAlive = true; Codec codec = new TarsCodec(serverCfg.getCharsetName()); Processor processor = new TarsServantProcessor(); Executor threadPool = ServantThreadPoolManager.get(servantAdapterConfig); Endpoint endpoint = this.servantAdapterConfig.getEndpoint(); if (endpoint.type().equals("tcp")) { this.selectorManager = new SelectorManager(Utils.getSelectorPoolSize(), new ServantProtocolFactory(codec), threadPool, processor, keepAlive, "server-tcp-reactor", false); this.selectorManager.setTcpNoDelay(serverCfg.isTcpNoDelay()); this.selectorManager.start(); System.out.println("[SERVER] server starting at " + endpoint + "..."); ServerSocketChannel serverChannel = ServerSocketChannel.open(); serverChannel.socket().bind(new InetSocketAddress(endpoint.host(), endpoint.port()), 1024); serverChannel.configureBlocking(false); selectorManager.getReactor(0).registerChannel(serverChannel, SelectionKey.OP_ACCEPT); System.out.println("[SERVER] server started at " + endpoint + "..."); } else if (endpoint.type().equals("udp")) { this.selectorManager = new SelectorManager(1, new ServantProtocolFactory(codec), threadPool, processor, false, "server-udp-reactor", true); this.selectorManager.start(); System.out.println("[SERVER] server starting at " + endpoint + "..."); DatagramChannel serverChannel = DatagramChannel.open(); DatagramSocket socket = serverChannel.socket(); socket.bind(new InetSocketAddress(endpoint.host(), endpoint.port())); serverChannel.configureBlocking(false); this.selectorManager.getReactor(0).registerChannel(serverChannel, SelectionKey.OP_READ); System.out.println("[SERVER] servant started at " + endpoint + "..."); } }
public void bind() throws IOException { ServerConfig serverCfg = ConfigurationManager.getInstance().getServerConfig(); boolean keepAlive = true; Codec codec = new TarsCodec(serverCfg.getCharsetName()); Processor processor = new TarsServantProcessor(); Executor threadPool = ServantThreadPoolManager.get(servantAdapterConfig); Endpoint endpoint = this.servantAdapterConfig.getEndpoint(); if (endpoint.type().equals("tcp")) { this.selectorManager = new SelectorManager(Utils.getSelectorPoolSize(), new ServantProtocolFactory(codec), threadPool, processor, keepAlive, "server-tcp-reactor", false); this.selectorManager.setTcpNoDelay(serverCfg.isTcpNoDelay()); this.selectorManager.start(); System.out.println("[SERVER] server starting at " + endpoint + "..."); ServerSocketChannel serverChannel = ServerSocketChannel.open(); serverChannel.socket().bind(new InetSocketAddress(endpoint.host(), endpoint.port()), 1024); serverChannel.configureBlocking(false); selectorManager.getReactor(0).registerChannel(serverChannel, SelectionKey.OP_ACCEPT); System.out.println("[SERVER] server started at " + endpoint + "..."); } else if (endpoint.type().equals("udp")) { this.selectorManager = new SelectorManager(1, new ServantProtocolFactory(codec), threadPool, processor, false, "server-udp-reactor", true); this.selectorManager.start(); System.out.println("[SERVER] server starting at " + endpoint + "..."); DatagramChannel serverChannel = DatagramChannel.open(); DatagramSocket socket = serverChannel.socket(); socket.bind(new InetSocketAddress(endpoint.host(), endpoint.port())); serverChannel.configureBlocking(false); this.selectorManager.getReactor(0).registerChannel(serverChannel, SelectionKey.OP_READ); System.out.println("[SERVER] servant started at " + endpoint + "..."); } }