只是試圖將一些swingx-ws組件添加到整個swinglabs演示中,並注意到與在本地加載相比,簡單的JXMapKit/-Viewer比webstartable加載瓷磚要慢幾個數量級。JXMapKit/-Viewer極其緩慢,因爲webstartable - 從哪裏開始挖掘?
而失去了,我應該開始尋找(UI更新似乎是在美國東部時間,但可能需要仔細看看):
- 任何人經歷不同的加載時間?
- 任何猜測可能是什麼原因?
- 如何調試webstartable?
的代碼是相當簡單的(在本地運行,你需要swingx and swingx-ws:
public class WSDemo {
private JComponent createContent() {
JComponent content = new JPanel();
content.setLayout(new BorderLayout());
content.add(createMapKit());
return content;
}
protected JComponent createMapKit() {
final int max = 17;
TileFactoryInfo info = new TileFactoryInfo(1, max - 2, max, 256, true,
true, // tile size is 256 and x/y orientation is normal
"http://tile.openstreetmap.org",// 5/15/10.png",
"x", "y", "z") {
public String getTileUrl(int x, int y, int zoom) {
zoom = max - zoom;
String url = this.baseURL + "/" + zoom + "/" + x + "/" + y
+ ".png";
return url;
}
};
DefaultTileFactory tf = new DefaultTileFactory(info);
tf.setThreadPoolSize(1);
final JXMapKit kit = new JXMapKit();
kit.setTileFactory(tf);
kit.setZoom(10);
kit.setAddressLocation(new GeoPosition(51.5, 0));
kit.getMainMap().setDrawTileBorders(true);
return kit;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new WSDemo().createContent());
frame.setLocationByPlatform(true);
frame.setSize(400, 400);
frame.setVisible(true);
}
});
}
}
編輯:
好像它主題相關的許可在網絡方面檢查:性能分析表明,整個連接調用堆棧是不同的(不過分令人驚訝),並且需要很長時間。現在放棄...
編輯2:
似乎有是2個獨立的問題
- 才能打開連接在安全限制範圍內裝載瓷磚稍長的時間,也就是在JavaWebStartSecurity熱點。 checkConnect(String,int),因爲@Howard已經注意到了。
- 的EDT的一個相當怪異的封鎖,似乎只發生,如果mapKit在
(的BSAF)一SingleFrameApplication用於重現阻塞,運行SimpleWSDemoApp,等到地圖上是可見的(需要有時候,這是第一個問題),然後使用鼠標快速上下移動縮放大拇指:UI完全被阻塞。在普通框架(頂部的參考)上做同樣的事情有最初的加載等待,但不能再現阻塞。
怪異啄(對我來說)是什麼阻止EDT,從VisualVM的的線程轉儲:
"AWT-EventQueue-0" prio=6 tid=0x063d3000 nid=0x1468 waiting for monitor entry [0x05efe000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.security.Permissions.implies(Unknown Source)
- waiting to lock <0x29f7b118> (a java.security.Permissions)
at sun.security.provider.PolicyFile.implies(Unknown Source)
at java.security.ProtectionDomain.implies(Unknown Source)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkSystemClipboardAccess(Unknown Source)
at java.awt.event.InputEvent.canAccessSystemClipboard(Unknown Source)
at java.awt.event.InputEvent.<init>(Unknown Source)
at java.awt.event.MouseEvent.<init>(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
被拖動鼠標踢檢查權限剪貼板訪問...
VisualVM的顯示我'JavaWebStartSecurity.checkConnect(字符串,整數)'和有'getHostByAddr(字節[])內'一個極端的熱點。你能證實這種行爲嗎? – Howard 2013-04-09 15:48:42
@Howard - 將檢查,感謝 – kleopatra 2013-04-09 15:50:02
@Howard驗證 - 和不知道如何解決它.. – kleopatra 2013-04-10 13:24:13