모든 명령 처리기를 대상으로하는 부분이 만들어졌습니다. AbstractOperationCollectionAspect
을 확장하고, createOperation
메소드를 구현할 때 사용할 핸들러로 핸들러에서 전달하는 collectionPoint
애스펙트를 구현합니다.
즉,
public aspect CommandHandlerOperationCollectionAspect extends AbstractOperationCollectionAspect
{
public pointcut collectionPoint():
execution(* com.xtrac.common.core.handler.ThreadedHandler.HandlerRunnable.executeActorHandler(com.xtrac.common.core.handler.Handler,java.lang.Object));
protected Operation createOperation(JoinPoint jp)
{
Object[] args = jp.getArgs();
com.xtrac.common.core.handler.Handler handler = (Handler) args[0];
Operation operation = new Operation()
.type(XTRACOperationType.COMMAND_HANDLER)
.label(handler.getClass().getSimpleName())
.sourceCodeLocation(getSourceCodeLocation(jp));
return operation;
}
@Override
public String getPluginName()
{
return HandlerPluginRuntimeDescriptor.PLUGIN_NAME;
}
@Override
public boolean isMetricsGenerator()
{
return true;
}
}
는 또한 분석기 작성하는 AbstractSingleTypeEndpointAnalyzer
을 구현 : 공용 클래스가 HandlerEndPointAnalyzer이 AbstractSingleTypeEndpointAnalyzer 확장을 { 개인 정적 최종 HandlerEndPointAnalyzer INSTANCE = 새로운 HandlerEndPointAnalyzer();
private HandlerEndPointAnalyzer() {
super(XTRACOperationType.COMMAND_HANDLER);
}
public static final HandlerEndPointAnalyzer getInstance() {
return INSTANCE;
}
@Override
protected EndPointAnalysis makeEndPoint(Frame handlerFrame, int depth) {
Operation operation = handlerFrame.getOperation();
String resourceLabel = operation.getLabel();
String exampleRequest = EndPointAnalysis.getHttpExampleRequest(handlerFrame);
return new EndPointAnalysis(EndPointName.valueOf(resourceLabel),
resourceLabel,
exampleRequest,
getOperationScore(operation, depth),
operation);
}
는 기술자로 추가해야되는 :
public class HandlerPluginRuntimeDescriptor extends PluginRuntimeDescriptor {
public static final String PLUGIN_NAME = "handler";
private static final HandlerPluginRuntimeDescriptor INSTANCE=new HandlerPluginRuntimeDescriptor();
private static final List<? extends EndPointAnalyzer> epAnalyzers=
ArrayUtil.asUnmodifiableList(HandlerEndPointAnalyzer.getInstance());
private HandlerPluginRuntimeDescriptor() {
super();
}
public static final HandlerPluginRuntimeDescriptor getInstance() {
return INSTANCE;
}
@Override
public Collection<? extends EndPointAnalyzer> getEndPointAnalyzers() {
return epAnalyzers;
}
@Override
public String getPluginName() {
return PLUGIN_NAME;
}
}
모든 스프링 XML 파일에 기록 : 일부 ftl
들과 함께
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:insight="http://www.springframework.org/schema/insight-idk"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/insight-idk http://www.springframework.org/schema/insight-idk/insight-idk-1.0.xsd">
<insight:plugin name="handler" version="${project.version}" publisher="XTRAC Solutions LLC" />
<insight:operation-group group="XTRAC Handlers" operation="command_handler_operation" />
<insight:operation-group group="XTRAC Handlers" operation="event_handler_operation" />
<insight:operation-group group="XTRAC Classic" operation="xtrac_workflow_operation" />
<insight:operation-view operation="command_handler_operation"
template="com/xtrac/insight/command_handler_operation.ftl" />
<insight:operation-view operation="event_handler_operation"
template="com/xtrac/insight/event_handler_operation.ftl" />
<insight:operation-view operation="xtrac_workflow_operation"
template="com/xtrac/insight/xtrac_workflow_operation.ftl" />
<bean id="handlerPluginEndPointAnalyzer"
class="com.xtrac.insight.HandlerEndPointAnalyzer"
factory-method="getInstance"
lazy-init="true"
/>
<bean id="handlerPluginRuntimeDescriptor"
class="com.xtrac.insight.HandlerPluginRuntimeDescriptor"
factory-method="getInstance"
lazy-init="true"
/>
</beans>
.
이 핸드러에서 발생하는 일부 웹 서비스 호출을 수집하기 위해 MethodOperationCollectionAspect
도 생성했습니다. 이것은 핸들러 조작 중에 무슨 일이 일어나고 있는지와 얼마나 많은 시간이 걸리는지를 보여주는 멋진 디스플레이를 위해 설정합니다. 예 : 나는이 매우 유용

명명 된 처리기에 대한베이스 라인 임계 값을 설정 한 경우 
이 은 응용 프로그램의 상태에 모니터를 유지하기위한 프레임 워크를 설정 그때 할 수 있기 때문에 응용 프로그램이 정상적으로 작동하는지 확인하십시오. 그렇지 않으면 엔드 포인트의 기본값은 < 200ms입니다.
