在我的 Vaadin 应用程序中的某个地方,我使用第二个浏览器连接后立即收到此异常Caused by: java.lang.RuntimeException: A connector with id 22 is already registered!
at com.vaadin.ui.ConnectorTracker.registerConnector(ConnectorTracker.java:133)
它总是发生在同一个地方,但我不知道为什么会发生这种情况,原因一定是在其他地方。
我想我可能会从另一个 session 中窃取 UI 组件 - 这不是我的意图。
目前,我没有看到任何 static
我可能在多个 session 中使用的 UI 组件实例。
我该如何调试?它已经成为一个相当大的项目。
有什么要寻找的提示吗?
最佳答案
是的,这通常是因为您附加了已附加在其他 session 中的组件。
尝试使用临时 ConnectorTracker
记录失败的连接器,所以下次它发生时,你可以捕获它。
例如:
public class SomeUI extends UI {
private ConnectorTracker tracker;
@Override
public ConnectorTracker getConnectorTracker() {
if (this.tracker == null) {
this.tracker = new ConnectorTracker(this) {
@Override
public void registerConnector(ClientConnector connector) {
try {
super.registerConnector(connector);
} catch (RuntimeException e) {
getLogger().log(Level.SEVERE, "Failed connector: {0}", connector.getClass().getSimpleName());
throw e;
}
}
};
}
return tracker;
}
}
关于瓦丁 "A connector with id xy is already registered",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23881573/