openfire源码部署心得
更新时间:2024-06-02 07:12:01 阅读量: 综合文库 文档下载
- openfire源码分析推荐度:
- 相关推荐
一. 部署
1解压openfire源码放到workspace下.建立一个java project,名字与解压后源码文件夹名字一样,这样就可以把openfire源码导入到eclipse中 2.使用ant进行编译。
在openfire项目导入进来之后,点击 Window -> Show View -> Ant
然后就会显示出Ant的窗口,在Ant 视图中,单击右键,在弹出的快捷菜单中选择Add Buildfiles
在弹出的对话框中,展开openfire_src/build文件夹,选择build目录下的build.xml 接下来双击执行openfire[default] (带一个三角符号的那个) 在控制台中显示“BUILD SUCCESSFUL” 那么就表示编译成功,
3.设置启动项目
点击openfire_src项目,在菜单栏中选择Run->Open Run Dialog (Or Run->Run Configurations)
弹出一个对话框,在左侧菜单中右键点击Java Application,选择New创建启动配置 在Run窗口的Main选项卡中, 修改最上面Name文本框中的值,改成包含要启动的类的工程名openfire_src
(没什么用,就是一个标识,随便起名字。) 在Run窗口的Main选项卡中, project框中填写:openfire_src
Main class 填写:org.jivesoftware.openfire.starter.ServerStarter 点击Apply应用。
点击进入Arguments选项卡,在上面那个框(VM arguments:)中填写 -DopenfireHome=\
其中${workspace_loc:openfire_src} 中的 openfire_src 要根据你的项目名来进行同步修改。 点击Apply应用。
点击进入Classpath选项卡,选中User Entries,然后点击右侧的Advanced按钮,会弹出一个小框,选择Add Folders,单击OK。
选择 openfire_src\\src\\i18n点OK 按钮将这个文件夹加入到Classpath选项卡中 选择 openfire_src\\src\\resources 目录也加到 Classpath选项卡中
点击Apply应用。
5.点击进入Common选项卡中,勾选Run复选框。 点击Apply应用。
在进行这些配置之后,就算是基本完工了。
可以直接点击配置框最下方的Run按钮,或者单击菜单栏Run->Run开始跑程序。
二.错误解决
1.导入项目后一直报错 原因:缺少jar包
解决办法:将openfire目录下build/lib目录下的所有包都通过JAVA BUILDPATH导入到项目
中来,这个时候可能还缺包,接着导入这几个包。导完后可能还缺,缺少的包在openfire目录下的src/plugins中,如果能找到报错的类在哪个包中就直接加进来,否则的话把所有的包都导进来吧。都导完以后就不报错了
2. java.lang.NullPointerException
at org.jivesoftware.admin.AdminConsole.getAppName(AdminConsole.java:122) at org.jivesoftware.openfire.admin.decorators.setup_jsp._jspService(setup_jsp.java:168) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.servlet.Dispatcher.include(Dispatcher.java:192)
at
com.opensymphony.module.sitemesh.filter.PageFilter.applyDecorator(PageFilter.java:156)
at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:59) at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:66)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) at
org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:42) at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:70)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:99) at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) Powered by Jetty://
这时因为是文件路径所导致的问题,需要将admin-sidebar.xml和
openfire_i18n_en.properties这2个文件直接放在openfire\\bin目录下即可解决这个问题。 如果再次出现,这样的问题,就需要将openfire目录下的你把openfire下的work 和target文件都删除了,然后重新发布一个。因为web的内容不会自动更新的,只有.class会自动更新。
3.如果文件路径配置不正确(即Openfire的Home没有设定或者设置不正确),就可能在运行时出现如下所示的问题: Could not locate home
java.io.FileNotFoundException......
ERROR 12114 [Jive-ERR] ():
java.io.FileNotFoundException: XML properties file does not exist: openfire.xml........
在XMPPServer类中有一个locateOpenfire方法,这个方法就是设置openfireHome属性。 第1部分的代码如下:
String jiveConfigName = \// First, try to load it openfireHome as a system property. if (openfireHome == null) {
String homeProperty = System.getProperty(\try {
if (homeProperty != null) {
openfireHome = verifyHome(homeProperty, jiveConfigName);
} }
catch (FileNotFoundException fe) { // Ignore. } }
是在环境变量设置了Openfire的Home的情况下寻找openfire.xml文件
你可以更改第二部分的代码让Openfire找到Home: // If we still don't have home, let's assume this is standalone
// and just look for home in a standard sub-dir location and verify // by looking for the config file if (openfireHome == null) { try {
//修改的是下面的代码,将\替换为其他路径了
openfireHome=verifyHome(\}
catch (FileNotFoundException fe) { // Ignore. }
catch (IOException ie) { // Ignore. } }
这部分默认是找当前文件路径,你可以修改它为你安装openfire的路径,这样问题就可以解决了。
或者,代码里加一行如果获取到的地址为空的话自己手动赋值进去
正在阅读:
openfire源码部署心得06-02
2016年福建省高等职业教育入学考试计算机类专业基础知识考试大纲12-18
懂得感恩并幸福、快乐的生活07-29
个人博客系统论文终稿08-17
金版学案2018-2019学年物理(粤教版)必修一试题:第三章第一节03-07
最新苏教版小学一年级数学下册全册表格式教案含教学设计05-22
福建省语言文字工作委员会文件03-30
物资采购廉洁风险防控措施04-04
交友短信大全02-20
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 部署
- 源码
- openfire
- 心得
- 初中牛津英语7B Unit1 Reading I练习
- 竞赛辅导讲义(几何)
- 抽油机现场维护保养及操作流程
- 基层农村劳动力转移教育问题研究
- 《通信铁塔基础技术要求(V1.0)》
- 九章算术与几何原本的比较
- 2018年太阳能硅片硅锭市场调研及发展前景趋势预测(目录)
- 2016年番禺区一模语文试卷和答案
- 2011.1月领导科学考试试题(选择题答案解析)
- 天宝铁丰矿业排土场初步设计
- 电气危险源辨识 - 图文
- 苏教版五年级数学上册全册导学案2015.7.5
- 东财16春学期《特殊会计准则》作业一、二、三
- 相图二元系统
- 2012年会计电算化习题
- 马克思主义自由论
- (北京科电)GEX-2000技术说明书(出版)
- 法学论文
- 将传统文化元素融入幼儿园环境中
- 强强联手,协同创新,突破煤层瓦斯高效抽采难题