日期:2014-05-17  浏览次数:20748 次

Flex RTMP 端口 2038 被多个应用程序共同设置,但只有一个可以成功绑定,其他两个错误提示,请问有什么影响
本帖最后由 u014446906 于 2014-04-17 12:26:05 编辑
Hi,

services-config.xml 的内容:


        <channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
            <endpoint uri="rtmp://{server.name}:2038" class="flex.messaging.endpoints.RTMPEndpoint"/>
            <properties>
                <idle-timeout-minutes>20</idle-timeout-minutes>
                <client-to-server-maxbps>100K</client-to-server-maxbps>
                <server-to-client-maxbps>100K</server-to-client-maxbps>
                <!-- for deployment on WebSphere, must be mapped to a WorkManager available in the web application's jndi context.
                <websphere-workmanager-jndi-name>java:comp/env/wm/MessagingWorkManager</websphere-workmanager-jndi-name>
                -->
            </properties>
        </channel-definition>


在一个 Java Web 项目中,我发现有 Flex 的存在,并且这个项目在几个模块中使用了 Flex,比如以下3个模块都使用了 Flex :


http://127.0.0.1:7001/Flex_Module_1
http://127.0.0.1:7001/Flex_Module_2
http://127.0.0.1:7001/Flex_Module_3


而且,我发现这三个模块里面的 services-config.xml 里面配置的 RTMP 的端口都是 2038,


\Flex_Module_1\WEB-INF\flex\services-config.xml
\Flex_Module_2\WEB-INF\flex\services-config.xml
\Flex_Module_3\WEB-INF\flex\services-config.xml


这样,我启动 weblogic 后,weblogic 控制台可以看到错误 ,


[Flex] RTMP-Server failed to start up: java.net.BindException: Address already i
n use: bind
flex.messaging.endpoints.rtmp.RTMPException: The RTMP server has encountered a f
atal exception starting up: Address already in use: bind
        at flex.messaging.endpoints.rtmp.BaseNIORTMPServer.run(BaseNIORTMPServer
.java:310)


现在想问的问题是:

如果只有 Module_1 可以成功绑定了 2038 端口后,其他两个 Module_2/3 肯定是绑定失败的,那么,其他两个 Module_2/3 在使用 Flex 上是不是因为绑定失败而导致有些东西出错了或不能使用了?

我是今天才使用 Flex , 但是按理论上,应该是 Flex 框架里面有一个 Class

(只是例子:) 
RTMPServerListerner module_2_or_3 = new RTMPServerListerner(2038端口),
然后,其他 Flex Client 客户端或其他程序需要用到 module_2_or_3 时肯定出错了,因为 module_2_or_3 连绑定初始化的时候已经出现问题,但是,module_1 就没问题。


这个 Flex