2016-01-21 32 views
0

我想將帶寬測量添加到我的服務器(用純Java編寫)。我想到了一個API,看起來像Java:測量特定代碼段的網絡帶寬

MeasureBandwidthSignletone.getInstance().startMeasuring(); 
...... 
.....//here I may connect to a db or using http (HttpUrlConnection)... 
..... 
MeasureBandwidthSignletone.getInstance().endMeasuring(); 

問題是,我有許多不同類型的代碼,訪問網絡(JDBC,HttpURLConnection類,FTP,等...)我在想,如果我能以某種方式連接一個threadlocal監視器插座,這將使我知道有多少字節上傳或下載。

我知道一種方法將使用ASM/AspectJ來更改字節碼 - 但有沒有更簡單的方法來插入到Java套接字API?

謝謝

+0

監控套接字的唯一方法是通過代碼注入。更簡單的方法是在機器上運行此測試,並監控機器的網絡使用情況。 –

+0

如何設置一個定製的SocketFactoryImpl?這能工作嗎? – user967710

回答

1

有關設置做出SocketFactoryImpl一個自定義的呢?這能工作嗎?

這也適用於特定版本的JVM。如果您知道您定位的是哪個版本,則可以創建此類的修改版本。

這對於通用JVM不起作用的原因是該類使用的內部API在版本之間可能不同,這就是爲什麼字節碼注入更有可能適用於各種JVM的原因。

+0

它是否可以工作:: Java HotSpot™64位服務器虛擬機(構建24.80-b11,混合模式)? – user967710

+0

@ user967710如果您擁有此版本的源代碼副本,則可以對其進行修改並使用修改後的版本,前提是您不認爲許可證中不允許這樣做。 –