2014-03-05 26 views
0

我想监视我们的Java应用程序(GlassFish v3.1.2 JSF2应用程序)的关键部分。 我想跟踪一个特定的函数调用作为一个新的事务。该方法可以在“/ Faces Servlet”或任何其他JAX-RS事务中调用。NewRelic Java API和事务边界

@Trace注释似乎对我来说是完美的,但是阅读文档并不清楚它是否支持嵌套事务(如REQUIRES_NEW J2EE事务语义)。

这里是我想跟踪

@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这样的方法:

@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个交易跟踪? 一个用于JAX-RS呼叫wsquery和两个用于内部/查询

谢谢。

回答

0

根据所提供的信息,它不确定你将得到什么。我建议给它一个测试。您还可以将日志记录级别提升到“最佳”级别,并确切了解正在进行的操作。如果遇到问题,请联系我们http://support.newrelic.com

+0

谢谢,这不是我所期望的,实际上NewRelic Agent不支持嵌套事务。如果交易存在,它只会被重命名。如果我多次调用查询,我的事务参数将被最后一次调用覆盖。 – nomoa

+0

“嵌套”是由另一个使用相同的进程或线程调用的新事务?如果没有,我们很可能“失去了追踪的味道”,这可能会阻止代理商进行报告。 这有道理吗? 谢谢, 珍妮 – Jeanie