今天忙了一天,目的很简单,就是把red5整合到tomcat中,通过简单访问可以请求到数据。
下面简单记述一下过程:
1,下载需要的red5.red5官网http://www.red5.org/,下载1.0.rec里的两个zip包,如图。
2,将下载的包解压后,将red5-war-1.0-RC1包里的ROOT.war放到tomcat的webapps下。将原来的ROOT文件夹改名为ROOT_t,便于区别,启动tomcat。当启动完毕后就出现一个新的ROOt文件夹。该文件夹备用。
3,在Eclipse中新建项目。我这里命名为chapter2,然后到ROOT文件夹下 WEB-INF下面拷贝lib目录到相同位置,并拷贝文件适当修改。还要拷贝red5.jar.下面先修改web.xml.具体如下
<?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>chapter2</display-name> <context-param> <param-name>webAppRootKey</param-name> <param-value>/chapter2</param-value> </context-param> <context-param> <param-name>globalScope</param-name> <param-value>default</param-value> </context-param> <context-param> <param-name>parentContextKey</param-name> <param-value>default.context</param-value> </context-param> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/classes/*-web.xml</param-value> </context-param> <listener> <listener-class>org.red5.server.war.WarLoaderServlet</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <servlet> <servlet-name>gateway</servlet-name> <servlet-class>org.red5.server.net.servlet.AMFGatewayServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>rtmpt</servlet-name> <servlet-class>org.red5.server.net.rtmpt.RTMPTServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>gateway</servlet-name> <url-pattern>/gateway</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/fcs/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/open/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/idle/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/send/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/close/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/WEB-INF/*</url-pattern> </web-resource-collection> <auth-constraint /> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/persistence/*</url-pattern> </web-resource-collection> <auth-constraint /> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/streams/*</url-pattern> </web-resource-collection> <auth-constraint /> </security-constraint> </web-app>
4,进入Root/WEB-INF/classes文件夹里,拷贝所有配置文件,如下.
修改root-web.xml。具体内容如下,
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="/WEB-INF/red5-web.properties" /> </bean> <!-- ROOT web context --> <bean id="web.context.chapter2" class="org.red5.server.Context"> <property name="scopeResolver" ref="red5.scopeResolver" /> <property name="clientRegistry" ref="global.clientRegistry" /> <property name="serviceInvoker" ref="global.serviceInvoker" /> <property name="mappingStrategy" ref="global.mappingStrategy" /> </bean> <bean id="web.scope.chapter2" class="org.red5.server.WebScope" init-method="register"> <property name="server" ref="red5.server" /> <property name="parent" ref="global.scope" /> <property name="context" ref="web.context.chapter2" /> <property name="handler" ref="web.handler.chapter2" /> <property name="contextPath" value="${webapp.contextPath}" /> <property name="virtualHosts" value="${webapp.virtualHosts}" /> </bean> <bean id="web.handler.chapter2" class="first.Application" singleton="true" /> <bean id="flv.service" class="chapter7.StreamService" singleton="true"> </bean> </beans>
注意此处的chapter2,是我们的项目名称。red5-web.properties放置在web-info下,内容是
webapp.contextPath=/chapter2 webapp.virtualHosts=localhost,localhost:8088,127.0.0.1:8088
5,修改red5-core.xml 。
具体如下:
<!-- RTMP Mina Transport --> <bean id="rtmpTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop"> <property name="ioHandler" ref="rtmpMinaIoHandler" /> <property name="connectors"> <list> <bean class="java.net.InetSocketAddress"> <constructor-arg index="0" type="java.lang.String" value="127.0.0.1" /> <constructor-arg index="1" type="int" value="1935" /> </bean> <!-- You can now add additional ports and ip addresses <bean class="java.net.InetSocketAddress"> <constructor-arg index="0" type="java.lang.String" value="0.0.0.0" /> <constructor-arg index="1" type="int" value="1936" /> </bean> --> </list> </property> <property name="receiveBufferSize" value="65536" /> <property name="sendBufferSize" value="271360" /> <property name="connectionThreads" value="4" /> <property name="ioThreads" value="16" /> <!-- This is the interval at which the sessions are polled for stats. If mina monitoring is not enabled, polling will not occur. --> <property name="jmxPollInterval" value="1000" /> <property name="tcpNoDelay" value="true" /> </bean>
注意: tomcat里面添加太多的red5服务,会造成tomcat内存泄露,这么时候就要修改tomcat的启动内存bin/catalina.bat
Win:
set JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx1024m
linux:
JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m"
如果要修改webapps下的项目启动的优先级,就在 conf\Catalina\localhost 加上一个 项目名.xml 的文件
文件内容:
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <Context antiResourceLocking="false" privileged="true" />
6 然后我们做相应的响应代码。
package first; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.IConnection; public class Application extends ApplicationAdapter{ public boolean appConnect(IConnection conn,Object[] args) { System.out.println("链接"); return true; } public String change(String str){ System.out.println("客户端调用服务器端方法"); return str.toUpperCase(); } }
package chapter7; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; import org.red5.server.api.IScope; import org.red5.server.api.Red5; import org.springframework.core.io.Resource; public class StreamService { /** * Getter for property 'listOfAvailableFLVs'. * * @return Value for property 'listOfAvailableFLVs'. */ public Map getListOfAvailableFLVs() { IScope scope = Red5.getConnectionLocal().getScope(); Map<String, Map> filesMap = new HashMap<String, Map>(); Map<String, Object> fileInfo; try { Resource[] flvs = scope.getResources("streams/*.flv"); if (flvs != null) { for (Resource flv : flvs) { File file = flv.getFile(); Date lastModifiedDate = new Date(file.lastModified()); String lastModified = formatDate(lastModifiedDate); String flvName = flv.getFile().getName(); String flvBytes = Long.toString(file.length()); fileInfo = new HashMap<String, Object>(); fileInfo.put("name", flvName); fileInfo.put("lastModified", lastModified); fileInfo.put("size", flvBytes); filesMap.put(flvName, fileInfo); } } Resource[] mp3s = scope.getResources("streams/*.mp3"); if (mp3s != null) { for (Resource mp3 : mp3s) { File file = mp3.getFile(); Date lastModifiedDate = new Date(file.lastModified()); String lastModified = formatDate(lastModifiedDate); String flvName = mp3.getFile().getName(); String flvBytes = Long.toString(file.length()); fileInfo = new HashMap<String, Object>(); fileInfo.put("name", flvName); fileInfo.put("lastModified", lastModified); fileInfo.put("size", flvBytes); filesMap.put(flvName, fileInfo); } } } catch (IOException e) { e.printStackTrace(); } return filesMap; } private String formatDate(Date date) { SimpleDateFormat formatter; String pattern = "dd/MM/yy H:mm:ss"; Locale locale = new Locale("en", "US"); formatter = new SimpleDateFormat(pattern, locale); return formatter.format(date); } }
red5 整合到tomcat中(二)
相关推荐
【知识点详解】 ...通过以上步骤,你可以成功地将 Red5 与 Tomcat 整合,实现一个集成了流媒体服务的 Web 应用。这使得开发者可以在 Tomcat 上部署具有复杂多媒体交互的应用,如在线教育、直播平台、游戏服务等。
标题中的"red5 1.0.7整合tomcat6+maven+oflaDemos"涉及到的是一个关于搭建和配置Red5服务器的教程,其中包含了使用Maven构建工具以及OFLA Demos的实践。Red5是一个开源的流媒体服务器,能够处理音频、视频、数据和...
通过本文的学习,我们不仅了解了如何将Red5整合到Tomcat中,还深入了解了Red5的功能特点及其优势。这对于想要搭建实时音视频传输系统的开发者来说,具有非常重要的参考价值。希望本文能帮助大家更好地理解和掌握Red5...
为了将Red5整合到Tomcat中,我们需要正确配置和集成这两个组件,同时确保所有必要的JAR包都已到位。 首先,我们要明白Red5是一个独立的服务器,通常不直接与Tomcat一起运行。然而,如果你希望在Tomcat上部署Red5的...
在IT行业中,将Red5-1.0-RC1集成到Tomcat服务器是一个常见的操作,主要目的是为了利用Red5的实时流媒体服务功能,结合Tomcat的稳定性和广泛支持,搭建一个高效、可靠的流媒体发布和播放平台。下面将详细阐述这个过程...
在IT领域,特别是网络直播、视频会议系统以及实时通信服务中,RED5和TOMCAT的整合成为了一种常见且有效的部署策略。以下将详细介绍如何将RED5(一款开源的流媒体服务器)与TOMCAT(一个开源的Servlet容器)进行整合...
总的来说,整合Red5 1.0 Final与Tomcat是一项技术性较强的工作,涉及服务器配置、Web应用部署等多个方面。但通过这样的整合,我们可以利用Tomcat的稳定性与管理功能,以及Red5的流媒体能力,构建出高效且易于维护的...
【标题】"myRed5Test"是一个关于将Red5服务器集成到个人Tomcat服务器的实践项目,其中包含了一个名为"oflaDemo"的示例应用。这个项目旨在帮助开发者了解如何在自己的开发环境中配置和运行Red5服务器,以便进行流媒体...
描述中提到的 "red5与tomcat整合所需要用到的war包" 暗示了这个 ZIP 文件包含了一个名为 "ROOT.war" 的 Web 应用程序档案,这是部署在 Tomcat 服务器上的标准格式。Tomcat 是一个流行的、基于 Java 的开源应用服务器...
Linux+Apache+Tomcat 的整合是目前最常用的 web 服务器架构之一,本文档将详细介绍如何在 Red Hat Enterprise Linux 5.2 环境下安装和配置 Apache2.2.12、Tomcat6.0.20 和 JDK6u16,以实现一个完整的 JSP 环境。...
在Linux操作系统中,整合Apache Web服务器与Tomcat Servlet引擎是一项常见的任务,这主要是因为Apache擅长处理静态内容,而Tomcat则专注于运行Java应用,尤其是Servlet和JSP。这种整合使得系统能够提供一个高性能、...
在本教程中,我们将学习如何在Red Hat Enterprise Linux 5 (RHEL5)上安装Apache 2.2.6,并进行基本配置。 **步骤1:解压缩** 首先,通过以下命令解压缩Apache的源码包: ``` # tar -xvzf httpd-2.2.6.tar.gz ``` ...
本配置范例是一个实际的Red5项目,它已经被整合到Eclipse开发环境中,方便开发者进行调试和部署。以下是关于Red5配置及该工程的相关知识点: 1. **Red5服务器**:Red5是一个用Java编写的流媒体服务器,它可以处理...
当需要在Linux环境中,特别是Red Hat Enterprise Linux 5这样的操作系统上整合这两者时,可以实现更高效、灵活的Web服务。 首先,Apache与Tomcat的整合主要目的是利用Apache处理静态资源的能力和Tomcat对Java应用的...
Red5项目团队在文档中还提供了关于如何创建和部署自定义Red5应用的指导,以及如何将Red5与Tomcat服务器整合部署。关于安全性,手册详细描述了如何保证Red5部署的安全性,以及如何通过脚本实现Red5的一些核心功能。...
博文链接:https://kyo-cc.iteye.com/blog/195969
LAMP+Tomcat+Discuz+WordPress整合完整版 本文档详细介绍了如何在Linux平台上整合LAMP(Linux、Apache、Mysql、PHP)和Tomcat、Discuz、WordPress三个组件,以实现一个完整的Web应用系统。下面是对每个组件的详细...
在本文中,我们将详细介绍在 Red Hat AS5 操作系统上安装和配置 Apache、Tomcat、MySQL 和 JDK 的过程。本文主要面向 Linux 操作系统用户,所有软件都将以源码包的方式安装。 JDK 安装 首先,我们需要安装 JDK 1.5...