【发布时间】:2015-05-22 22:30:04
【问题描述】:
更新 似乎在构造函数中的 org.glassfish.tyrus.core.BaseContainer 中,这两行运行速度超级慢:
this.managedExecutorService = lookupManagedExecutorService();
this.managedScheduledExecutorService = lookupManagedScheduledExecutorService();
在这两种方法的 cmets 中提到 Android 是怎么回事,我是否使用了针对桌面的错误 Java 代码?
我使用的代码完全来自:
Tyrus Websocket Documentation: 1.1.2 Client Endpoint
不知何故,连接需要大约 10 秒,特别是在我运行 Eclipse 的调试器时的这一行:
ClientManager client = ClientManager.createClient();
会不会跟这个有关? Potentially similar Stack Overflow Question
我真的迷路了,我觉得我是一个罕见的异类,我试图将 websockets 与 Java 客户端一起使用,而不是使用带有 Javascript 的浏览器。
【问题讨论】:
-
记住在调试模式下运行会减慢速度;优化可能不是最努力的,垃圾收集等。
-
试用 Tyrus 1.10。 #createClient 不应该花费大量时间,#connectToServer 可以(服务器/网络问题)
-
@Pavel,我正在使用 tyrus-standalone-client-1.10.jar
-
啊,好的。我看到了 1.1.2,但这实际上是指向 1.9 文档的链接;)无论如何,你能做一些更全面的测量吗?您可以尝试调用 ClientManager.createClient 几千次,看看需要多长时间(没有附加调试器)。如果它超长,可能需要一些时间来处理类路径..
-
在致电
createClient之前尝试System.setProperty(javax.naming.InitialContext.INITIAL_CONTEXT_FACTORY, "javax.naming.spi.InitialContextFactory");。它应该很快就会使 JNDI 查找失败。在我的测试中,客户端的创建时间不到 100 毫秒。 (Grizzly 和 Jdk 变体)。
标签: java websocket glassfish ipv6 tyrus