org.jboss.remoting3.ProtocolException:打开的频道太多。如何增加渠道

Posted

技术标签:

【中文标题】org.jboss.remoting3.ProtocolException:打开的频道太多。如何增加渠道【英文标题】:org.jboss.remoting3.ProtocolException: Too many channels open. How to increase channels 【发布时间】:2016-08-21 17:31:14 【问题描述】:

我有 ejb 客户端来连接 jboss 6.4 eap 服务器。每次进行 ejb 调用时,我都会关闭 ejb 上下文。一切正常,但是当有大量请求时,我得到“org.jboss.remoting3.ProtocolException:打开的频道太多”

            Properties properties = new Properties();
            properties.put("remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED", "false");
            properties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
            properties.put("remote.connections", "1");
            properties.put("remote.connection.1.host","IP");
            properties.put("remote.connection.1.port","4447");
            properties.put("org.jboss.ejb.client.scoped.context", "true");
            properties.put("remote.connection.1.username", "EJB_USER"));
            properties.put("remote.connection.1.password", "EJB_PASSWORD");


            context = new InitialContext(properties);
            ejbContext = (Context) context.lookup("ejb:");
            final Object obj = ejbContext.lookup("EAR/BEAN/BEANName!RemoteInterface");

            try
                //do something
            finally
                ejbContext.close();
            

15:41:21,621 错误 [org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver](远程处理“config-based-ejb-client-endpoint”任务 10)无法为上下文 EJBReceiverContextclientContext=org 打开通道.jboss.ejb.client.EJBClientContext@591adafe, receiver=远程连接 EJB 接收器 [connection=org.jboss.ejb.client.remoting.ConnectionPool$PooledConnection@30a6a839,channel=jboss.ejb,nodename=jbeap-int]: org.jboss.remoting3.ProtocolException:打开的频道太多 在 org.jboss.remoting3.remote.RemoteConnectionHandler.handleOutboundChannelOpen(RemoteConnectionHandler.java:185) 在 org.jboss.remoting3.remote.RemoteConnectionHandler.open(RemoteConnectionHandler.java:326) 在 org.jboss.remoting3.ConnectionImpl.openChannel(ConnectionImpl.java:82) 在 org.jboss.ejb.client.remoting.ConnectionPool$PooledConnection.openChannel(ConnectionPool.java:229) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat- 1] 在 org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver.associate(RemotingConnectionEJBReceiver.java:130) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat-1] 在 org.jboss.ejb.client.EJBClientContext.registerEJBReceiver(EJBClientContext.java:383) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat-1] 在 org.jboss.ejb.client.EJBClientContext.registerEJBReceiver(EJBClientContext.java:335) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat-1] 在 org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector.setupEJBReceivers(ConfigBasedEJBClientContextSelector.java:150) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat-1] 在 org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector.getCurrent(ConfigBasedEJBClientContextSelector.java:115) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat-1] 在 org.jboss.ejb.client.naming.ejb.EjbNamingContext.createIdentifiableEjbClientContext(EjbNamingContext.java:258) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat- 1] 在 org.jboss.ejb.client.naming.ejb.EjbNamingContext.setupScopedEjbClientContextIfNeeded(EjbNamingContext.java:123) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat- 1] 在 org.jboss.ejb.client.naming.ejb.EjbNamingContext.(EjbNamingContext.java:98) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat-1 ] 在 org.jboss.ejb.client.naming.ejb.ejbURLContextFactory.getObjectInstance(ejbURLContextFactory.java:38) [jboss-ejb-client-1.0.30.Final-redhat-1.jar:1.0.30.Final-redhat- 1] 在 org.jboss.as.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:141) 在 javax.naming.InitialContext.lookup(InitialContext.java:417) [rt.jar:1.8.0_45] 在 javax.naming.InitialContext.lookup(InitialContext.java:417) [rt.jar:1.8.0_45]

我怎样才能增加这个频道?(我怎么知道它同时限制在40个频道)

谢谢。

【问题讨论】:

查看remoting3 MAX_OUTBOUND_CHANNEL 和 DEFAULT_MAX_INBOUND_CHANNELS 的代码是 40,如您所说。似乎还有一个配置 MAX_OUTBOUND_CHANNELS 的选项,但是我不确定这是否可以在 6.4 中完成。范围 context 存在问题,并且还提供了解决方法,以防万一您可以使用 40 个通道,它自己可以解决问题 【参考方案1】:

没有办法增加频道数量。我已将上下文实例设为静态。

【讨论】:

以上是关于org.jboss.remoting3.ProtocolException:打开的频道太多。如何增加渠道的主要内容,如果未能解决你的问题,请参考以下文章