2014-03-05 23 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