openmeeting经验总结.doc_第1页
openmeeting经验总结.doc_第2页
openmeeting经验总结.doc_第3页
openmeeting经验总结.doc_第4页
openmeeting经验总结.doc_第5页
免费预览已结束,剩余37页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Openeeting经验总结东软集团股份有限公司政府事业部卫生开发部2011年3月版本编号V0.1相关文档无作者洪德刚审核状态未审阅最后更新时间表 11版本更新摘要版本号日期审阅人更新摘要2011.3.14第二章增加 SOAP-Gateway测试分解1.4.3 从界面进入房间2011.3.25第二章增加1.5调用Web Services第三章增加1.4关于调用Web Services表 12目录第一章概述11.1服务端11.2客户端11.3UML用例图2第二章安装21.1工具21.1.1Java jdk1.6.*31.1.2OpenOffice-Service31.1.3ImageMagick31.1.4GhostScript31.1.5SWFTools31.1.6Mysql41.1.7OpenMeetings41.1.8OpenLaszlo41.1.9Red5 Server41.1.10Ffmpeg41.1.11Sox51.1.12Svn51.1.13Ant51.2已编译部署51.2.1解压编译包51.2.2目录分析61.2.3配置数据库连接文件71.2.4部署openmeetings7Openmeetings - Installation91.3源码部署131.3.1源码下载131.3.2消除项目红叉141.4例子161.4.1如何传参数给openmeetings161.4.2使用SOAP网关实现OpenMeetings171.4.3从界面进入房间191.5调用Web Services231.5.1Web Services介绍231.5.2Axis1和Axis2的区别241.5.3Openmeetings-WebServices24第三章常见问题261.1启动超时261.2数据库261.3例子1.2.1报错271.3.1报404错误271.3.2js脚本没有对象271.4关于调用web services271.5连oracle启动时报错281.6空指针28第一章 概述Openmeetings 是一个网络视频会议系统,提供视频,白板,doc,ppt,pdf,jpg等文档,图像文件的白板共享。其最大特点是视频会议客户端不需要下载安装,openmeetings系统将客户端做成swf形式,通过网页浏览的方式自动加载,免去用户下载安装的步骤,所有支持flash的ie浏览器都可以使用openmeetings进行视频会议。1.1 服务端服务端是基于开源的流媒体服务器RED5做的二次开发,利用Java开发,采用了Spring和Hibernate框架。Red5是一个采用Java开发的开源的Flash流媒体服务器,功能上与FMS类似。它支持:音频(MP3)和视频(FLV)转换成播放流、录制客户端播放流(只支持FLV)、共享对象、现场直播流发布、远程调用。1.2 客户端客户端实质上是一个采用OpenLaszlo开发的Flash。也就是说,OpenMeetings的客户端必须运行在Flash环境下。openlaszlo是一种富客户端开发技术,它结合了C/S客户端的强大功能和B/S结构的低成本高效率的优点。openlaszlo应用程序开发使用的是基于XML的LZX语言,它可以被编译成DHMTL,SWF等格式。Laszlo 是 OpenLaszlo 所使用的一种语言,这种语言通过说明性方法,用 XML 和 JavaScript 来创建部件或整个应用程序。这种标记语言与脚本语言的合并类似于目前的 HTML/JavaScript 组合。我们不妨把PC机上的Flash Player看作是一个OS(操作系统),而把OpenMeetings的前台(swf文件)当作该操作系统下的一个可执行程序。这样的思路下,我们就可以理解,就如我们在Windows下开发依赖于硬件的应用程序时必须要借助 WINDOWS API的支持一样,OpenMeetings的客户端也极度依赖Flash环境所能提供的功能和性能,尤其是和音频视频相关的地方。1.3 UML用例图图 1第二章 安装1.1 工具【注意】OpenMeetingsjava环境及相关支撑工具的安装不要带有空格;以下安装参考本人环境:1.1.1 Java jdk1.6.*JAVA_HOME:D:javajdkjdk1.6CLASSPATH:%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jarTomcat版本为 tomcat 6.0.*1.1.2 OpenOffice-Service目前单位提倡使用开源Office,安装细节不予以描述。1.1.3 ImageMagickImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。官方主页:/script/index.php下载地址:/script/binary-releases.php安装文件:ImageMagick-6.5.4-8-Q16-windows-static.exe1.1.4 GhostScriptGhostscript是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件。官方及下载:/ghost/安装文件:gs862w32.exe和gsv49w32.exe,先安装gs862w32.exe,再安装gsv49w32.exe1.1.5 SWFToolsSWFTools用于将pdf等文件转化为swf文件,它是一家集的SWF操纵和创造公用事业撰写的软件工具,可让您完全格式化文本,包括表格,公式等。官方主页:/下载地址:/download.html安装文件:swftools-0.9.0.exe1.1.6 Mysql使用MySQL,用于记录会议成员信息等内容,安装完Mysql后再安装一个连接Mysql的桌面工具MySQL-Front,用该工具新建一个数据库叫“openmeetings”。官方及下载:/downloads/安装文件:mysql-5.0.20-win32.rar、mysql-query-browser-1.1.20-win.msi、mysql-administrator-1.1.9-win.msi、MySQL-Front_Setup.exe1.1.7 OpenMeetings开源视频会议系统,基于OpenLaszlo开发。官方及下载:/p/openmeetings/安装文件:openmeetings_1_6_rc1_r3621.zip1.1.8 OpenLaszlo开源的富客户端应用开发平台。官方及下载:/安装文件:openlaszlo-4.4.1-windows-dev-install.exe1.1.9 Red5 Server开源Flash服务器,用来替代FCS/FMS,毕竟License还是有些贵。官方及下载:/red5安装文件:Red5 v0.6.3 final09.18.2007.EXE1.1.10 FfmpegFFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。官方及下载:/index.php/安装文件:ffmpeg.rev126651.1.11 SoxSox用于录制功能。官方及下载: /安装文件:sox-14.3.1-win32.exe1.1.12 Svn著名的版本管理工具Subversion,用来下载OpenMeetings的源代码的。Windows下推荐TortoiseSVN,这里下载。下载: /安装文件:TortoiseSVN-9725-win32-svn-1.6.12.msiEclipse: /1.1.13 AntApache Ant 是一个基于 Java 的生成工具。生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式。官方及下载:/安装文件:apache-ant- 已编译部署1.2.1 解压编译包将压缩包openmeetings_1_6_rc1_r3621.zip解压到硬盘上,文件夹的名字可以是任意的(非中文的,不要有空格)。1.2.2 目录分析图 启动服务openmeetings_1_6_rc1_r3621red5red5.bat 客户端openmeetings_1_6_rc1_r3621red5webappsopenmeetings其中:main.swf8.swf:正式运行;maindebug.swf8.swf:调式运行。 数据库配置文件openmeetings_1_6_rc1_r3621red5webappsopenmeetingsconfhibernate.cfg.xml1.2.3 配置数据库连接文件打开D:openmeetingsopenmeetings_1_6_rc1_r3621red5webappsopenmeetingsconfhibernate.cfg.xml,其中有一段:rootmysql数据库密码,安装的时候填写的,这里必须填写正确,否则连接不上数据库其中:jdbc:mysql:/localhost/openmeetings数据库名,也就是你新建的准备要给openmeeting存储资料的数据库1.2.4 部署openmeetings1.运行解压包里的D:openmeetingsopenmeetings_1_6_rc1_r3621red5下的red5.bat文件,然后后台的服务就将启动了,【注意】这里有可能会报错,退出,主要原因是JDK安装的版本不对,应该是1.6版本以上2. 打开浏览器,在地址栏输入http:/localhost:5080/openmeetings/install这时,会弹出如下页面:图 3然后点击“Continue with STEP 1”,进入到下一个页面:图 4图 5图 6注意:Openmeetings - Installation窗体顶端Userdata Username Userpass 必须填写,否则无法登陆 EMail Organisation(Domains) Name Configuration Allow self-registering (allow_frontend_register) Send Email to new registered Users (sendEmailAtRegister) New Users need to verify their EMail (sendEmailWithVerficationCode) Mail-Referer (system_email_addr) SMTP-Server (smtp_server) SMTP-Server Port(default Smtp-Server Port is 25) (smtp_port) SMTP-Username (email_userpass) SMTP-Userpass (email_userpass) Default Language Default Font for Export default_export_font Converters SWFTools Path 其中的用/来替换You can test if swftools is installed into system path by opening a shell or cmd-prompt and type pdf2swfIf this shows a list of options leave this field blank otherwise you have to specify the path to pdf2swf on your systemsee also ConvertersInstallation ImageMagick Path 其中的用/来替换see also ConvertersInstallationCrypt Type Crypt Class You can use this default crypt type which is equal to PHP-MD5 function or BSD-Styleencryption by using:org.openmeetings.utils.crypt.MD5CryptImplementationfor more information or to write your own Crypt-Style see:CustomCryptMechanismYou can edit this value later BUT previous created Users and Sessions might be not usable anymoreAuthentication Type LDAP Config Entering a path pointing to a valid LDAP Configuration File activates LDAP Authentification.Keep empty, if you want to keep the standard auth method.Admin users are always authenticated against local database, other user have to enter a valid LDAP password. Screen Viewer Screenviewer Config The standard Screenviewer is optimized for low-bandwidth areas - You have the possibility ofaltering the quality of the screencapture,ie.The jrDesktop alternative starts immediately without GUI, just stoppable via SysTray Icon, but offersa higher speed tranferring the screencaptures to the whiteboardThe RTP Sharer transfers Desktop Data as RTP Stream to Server. Best performance and quality is reached using 1024x768 as Screen ResolutionSubmit按照上述的填写好后,点击按钮即可。1.3 源码部署1.3.1 源码下载 TortoiseSVN图 7图 Subclipse它是eclipse的SVN插件,安装不予以描述。1.3.2 消除项目红叉主要有以下几种情况导致红叉: JRE环境重新配置,选择已经建好的Installed JREs图 少引用jar包图 10错误提示是因为slf4j.jar不在build path里。图 第三方jar包版本的问题在刚刚checkout的代码中我们可以看到如下图所示的错误:图 12这个问题很恶心,主要是Apache的mina包问题,项目使用的是2 . x . x版本的,但是2 . x . x版本的是没有common这个路径的,我们需要自己手动下载1.1.x版本的,这里我到官网下了1.1.7版本的,加到WebContent/WEB-INF/lib文件夹下,问题解决。最后右击工程,新建一个server,启动tomcat,在IE中输入http:/localhost:8080/install,进行安装。细节参见:1.2.4部署openmeetings1.4 例子1.4.1 如何传参数给openmeetings1、 找到baseauthcheckLoginData.lzx,在第一个oninit加上this.login() this.pressEnter = new LzDelegate(this, login); lz.Keys.callOnKeyCombo(this.pressEnter, enter); lz.Focus.setFocus(this.username,true); this.login(); if (this.b2.visible) this.username.setAttribute(text,yxUserName); this.userpass.setAttribute(text,yxUserPass); this.b2.onclick.sendEvent(); else this.b3.onclick.sendEvent(); 在里面加上 this.username.setAttribute(text,yxUserName); this.userpass.setAttribute(text,yxUserPass);2、 找到basenavimainNavi.lzx在最下面 !CDATA var value = this.naviObject; for (var i=0;i我现在已经把i=0改为了i=2,这样就直接进入到演讲之前的一个界面,接着我们就是触发进入按钮就OK了。3、 可以修改index.jsp,在openmeetings for java的源码找到它var so = new SWFObject(main.lzx?lzt=swf&lzr=swf8, lzapp, 100%, 100%, 8, #ffffff); so.addParam(quality, high); so.addParam(id, lzapp); so.addParam(allowScriptAccess, always); so.addParam(scale, noscale); so.addVariable(yxUserName,); so.addVariable(yxUserPass,); so.write(flashcontent);以上so.addVariable是我加的,就是把传过来的用户名与密码加入到openlaze中,这里的yxUserName与yxUserPass在openLaze中是全局变量。最后在IE中输入http:/localhost:8080/openmeetings/index.jsp?userName=admin&pwd=admin图 131.4.2 使用SOAP网关实现OpenMeetings要了解OpenMeetings提供的SOAP-Gateway的接口信息,最简单的方法是把OpenMeetings运行起来,然后在浏览器中输入:http:/localhost:5080/openmeetings/axis2-web/index.jsp图 14以上信息告诉我们,SOAP-Gateway实际上是一个采用AXIS2框架实现的Web Service。单击Services,我们可以查到它是由UserService、RoomService和FileService三个Service组成。再单击某个Service,如UserService或直接键入链接(http:/localhost:5080/phmeetings/services/UserService?wsdl),则以wsdl方式显示出它的全部方法和接口。 SOAP-Gateway的SSO原理SOAP-Gateway提供了几个WebService,其中的UserService是关于用户操作的,集中了getSession(获取SessionID)、AddNewUser(注册新用户)、loginUser(注册用户)、setUserObjectAndGenerateRoomHash(设置用户对象并获取房间Hash)等方法。 SOAP-Gateway测试分解SOAP-Gateway实现SSO的步骤有三步:第一步:向系统申请一个SessionID,我们调用getSession方法http:/localhost:8080/openmeetings/MethodGateway.dg?service=userservice&method=getSession界面返回SessionID:c7b767838c5c308408a75cf86c74f7c1第二步:以管理员身份登录系统(与第一步申请的SessionID绑定),调用loginUser方法http:/localhost:8080/openmeetings/MethodGateway.dg?service=userservice&method=loginUser&SID=c7b767838c5c308408a75cf86c74f7c1&username=admin&userpass=admin其中:SID是第一步时返回的SessionID,username/userpass是管理员的登录名/密码(注意,必须是管理员的)。 返回值为1表示登录成功。第三步:提交用户名、房间号等信息获得进入某个房间的secureHash(类似加密的票据),调用setUserObjectAndGenerateRoomHash方法http:/localhost:8080/openmeetings/MethodGateway.dg?service=userservice&method=setUserObjectAndGenerateRoomHash&SID=c7b767838c5c308408a75cf86c74f7c1&username=jglee&firstname=JG&lastname=LEE&profilePictureUrl=&email=.tw&externalUserId=&externalUserType=&room_id=2&becomeModeratorAsInt=1&showAudioVideoTestAsInt=1返回的是一个secureHash字符串,如:6c280410c96e91ea05d25e0b28b10a87,有了这个Hash,你就可以组装起一个直接进入房间的url地址。该Hash是与第一步中的SessionID绑定的,一旦Session实效,该Hash也失效了。第四步:利用返回的secureHash组装URLhttpServletResponse.sendRedirect(/ + webroot + /main.swf8.swf?secureHash= + hash + &lzproxied=solo);在singlewebapp/WebContent/WEB-INF/web.xml中增加: MethodGateway *.dg 1.4.3 从界面进入房间实际操作中经常是从界面的某个按钮或链接直接进入房间,现在我们模拟一下。修改文件:singlewebapp/src/app/org/openmeetings/servlet/outputhandler/MethodGateway.javaif (service.equals(userservice) if (method.equals(getSession) String SID = ; Sessiondata sessionData = MainService.getInstance().getsessiondata(); XStream xStream = new XStream(new XppDriver(); xStream.setMode(XStream.NO_REFERENCES); String xmlString = xStream.toXML(sessionData); /add by hongdg 2011.3.9增加SessionID SID = sessionData.getSession_id(); String username = httpServletRequest.getParameter(username); String userpass = httpServletRequest.getParameter(userpass); Long returnVal = new Long(-1); Object obj = Usermanagement.getInstance().loginUser(SID, username, userpass, null, false, null); if (obj = null) returnVal = new Long(-1); String objName = obj.getClass().getName(); log.debug(objName: + objName); if (objName.equals(java.lang.Long) returnVal = (Long) obj; else returnVal = new Long(1); if (returnVal = 1) username = mayd;/ String firstname = httpServletRequest.getParameter(firstname);/ String lastname = httpServletRequest.getParameter(lastname);/ String profilePictureUrl = httpServletRequest.getParameter(profilePictureUrl);/ String email = httpServletRequest.getParameter(email);/ Long externalUserId = httpServletRequest.getParameter(externalUserId) = ? 0 : Long.parseLong(httpServletRequest.getParameter(externalUserId);/ String externalUserType = httpServletRequest.getParameter(externalUserType);/ Long room_id = httpServletRequest.getParameter(room_id) = ? 0 : Long.parseLong(httpServletRequest.getParameter(room_id);/ int becomeModeratorAsInt = httpServletRequest.getParameter(becomeModeratorAsInt) = ? 1 : Integer.parseInt(httpServletRequest.getParameter(becomeModeratorAsInt); int showAudioVideoTestAsInt = httpServletRequest.getParameter(showAudioVideoTestAsInt) = ? 1 : Integer.parseInt(httpServletRequest .getParameter(showAudioVideoTestAsInt); org.openmeetings.axis.services.UserService uService = new org.openmeetings.axis.services.UserService(); String hash = uService.setUserObjectAndGenerateRoomHash(SID, username, firstname, lastname, profilePictureUrl, email, externalUserId, externalUserType, room_id, becomeModeratorAsInt, showAudioVideoTestAsInt); System.out.println(#hash# + hash); if (hash != null) String webroot = ScopeApplicationAdapter.webAppRootKey; /正式 httpServletResponse.sendRedirect(/ + webroot + /main.swf8.swf?secureHash= + hash + &lzproxied=solo); return; 我们再来设计页面,让用户点击“进入房间”后由该页面将数据提交给上面的MethodGateway.java,最后进入房间。文件:direct.jsp OpenMeetings 视频会议 OK,一个从界面触发直接进入房间的功能完成了。让我们来测试一下。输入房间链接:http:/localhost:8080/openmeetings/direct.jsp?roomid=2图 15图 161.5 调用Web Services1.5.1 Web Services介绍Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web webservice应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。1.5.2 Axis1和Axis2的区别WebServices的框架主要有XFire、Axis1、Axis2的。其中Axis1更繁杂、而XFire和Axis2是并列的新一代WebService平台。学习WebService建议Axis1还是要有所了解,Axis2与Axis1两者的API差别非常大,Axis2基本上是颠覆了Axis1重新做了设计。openmeetings采用的是Axis2的WebService平台。1.5.3 Openmeetings-WebServices调用示例代码: /使用RPC方式调用WebService RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论