2014-03-05 2 views
0

Java 응용 프로그램의 핵심 부분 (Glassfish v3.1.2 JSF2 응용 프로그램)을 모니터링하려고합니다. 특정 함수 호출을 새 트랜잭션으로 추적하려고합니다. 이 메소드는 "/ Faces Servlet"또는 다른 JAX-RS 트랜잭션 내에서 호출 할 수 있습니다.NewRelic Java API 및 트랜잭션 경계

@Trace 주석은 필자의 경우 완벽하다고 생각되지만 REQUIRES_NEW J2EE 트랜잭션 의미와 같이 중첩 트랜잭션을 지원하는지 명확하지 않습니다.

@GET 
public Response wsquery(...) { // <- Start NewRelic Transaction T1 
     myBean.query(q1); // <- Start nested Transaction T1.1 
     myBean.query(q2); // <- Start nested Transaction T1.2 
} 

가 나는 3 트랜잭션을 추적해야합니다 : 여기

내가
@Trace(dispatcher=true, matricName="Internal/Query") 
public void query(Query q) { 
     long st = -System.currentTimeMillis(); 
     // do my stuff 
     st += System.currentTimeMillis(); 
     NewRelic.addCustomParameter("Client", q.getClient()); 
     // Add useful parameters 
     NewRelic.recordResponseTimeMetric("Internal/Query/queryTime", st); // Is this needed? 
} 

그리고 예를 들어

이 같은 JAX-RS WS 추적 할 방법? 에 대한 JAX-RS 호출의 경우 wsquery이고 의 경우 2는입니다.

감사합니다.

답변

0

제공된 정보를 토대로 당신이 얻고 자하는 것이 정확히 무엇인지 확실하지 않습니다. 나는 그것에게 시험을 제안하는 것이 좋습니다. 또한 로깅 수준을 "최고"수준까지 높이고 계측중인 내용을 정확하게 볼 수 있습니다. 그 이상의 문제가 발생하면 http://support.newrelic.com

+0

감사합니다. 예기치 않은 것은 사실입니다. 사실 NewRelic Agent는 트랜잭션 중첩을 지원하지 않습니다. 트랜잭션이 존재하면 이름이 바뀝니다. 쿼리를 여러 번 호출하면 마지막 호출에서 트랜잭션 매개 변수를 덮어 씁니다. – nomoa

+0

"nesting"은 동일한 프로세스 또는 스레드를 사용하여 다른 트랜잭션이 호출하는 새로운 트랜잭션입니까? 그렇지 않다면, 우리가 "흔적의 향기를 잃어서"말할 수 있고 에이전트가보고하지 못하게 할 가능성이 있습니다. 의미가 있습니까? 감사합니다. Jeanie – Jeanie