最近有时间来研究一下即时通讯,打算在将来的项目中用到;研究方向是Openfire+spark+flex3.一连几天在Eclispe下部署openfire都没有成功,关于这方面的文档资料也比较少.加之OpenFire工程项目目录比较复杂;所以真的很难一次成功.
Openfire的介绍在此不多说了,网上有很多关于这个基于Java的XMPP服务器的介绍,也可以通过官方网站http://www.igniterealtime.org/来寻找关于Openfire的信息。
如果研究Openfire的代码,建议第一步在本机上安装Openfire服务器和Spark这款XMPP的客户端程序,这样既可以熟悉一下Openfire的样态和功能,也可以在以后的源代码调试过程中通过Openfire的目录结构得到帮助.
准备工作:Eclipse环境(当然包括JavaSE),Openfire的源代码包(例如:openfire_src_3_3_2.tar.gz,可到jivesoftware官方网站下载),Mysql数据库V5以上(当然可以用其他数据库,但在此例中选用Mysql作为Openfire的后台数据库)。
第一步:有个好心情,通过Openfire的安装包将Openfire安装在本机上,具体实现见http://blog.csdn.net/expendable/archive/2007/06/25/1666122.aspx这里有详细的介绍。(除了数据库的部分)
第二步:将openfire_src_3_3_2.tar.gz解压后目录下除了Readme和License以外有四个子目录。
<!--[if !supportLists]-->1. build目录:build目录下收录的是生成安装文件(例如:rpm)所要的一些文件,例如JRE等。<!--[endif]-->
<!--[if !supportLists]-->2. resources目录:resources目录下收录的是一些为实现国际化(i18n)和本地化的一些编码文件(例如:英文,中文,法文,德文等)。<!--[endif]-->
<!--[if !supportLists]-->3. documentation目录:documentation目录下收录的是一些关于Openfire安装和配置的信息,但最终要的是这里有Openfire开发的Javadoc。<!--[endif]-->
<!--[if !supportLists]-->4. src目录:顾名思义这个src文件夹就是我们想要的Openfire源代码了,这下面又有许多文件夹,我们只要Java文件夹就好,这里面实现的Openfire的核心功能,通过它就可以调试Openfire了。<!--[endif]-->
第三步:在Eclipse中将此Java文件夹当成源代码文件夹新建工程,建立新工程后观察Openfire所import的包,发现Openfire用了许多开源工具,而这些库都在上文提到的Build目录的lib目录下(当然也可以到网上下载),将Openfire用到的库都添加到这个新建工程的Referenced Libraries中。或者如果这样一个一个添加比较麻烦的话还有一个方法就是从你安装好的Openfire服务器目录下的lib目录中(例如:”D:\Program Files\Openfire\lib”或 “/usr/local/openfire/lib”)找到openfire.jar,打开后将里面的org/jivesoftware删除,重新打包成jar并添加到这个新建工程的Referenced Libraries中,这样省去了很多工作。
第四步:openfire的起始类为org.jivesoftware.openfire.starter.ServerStarter.java 但是直接运行此类却有问题,因为此类是针对Openfire安装包而设计的,此类的功能是将所用到的Jar文件解压并将class文件加载到虚拟机中,而我们要用的却是源代码中我们自己编译好的class文件,所以我们需要一个新的启动类,一个简单的实现如下(当然最好是与ServerStarter.java中的方法一样,用自定义的ClassLoader来将XMPPServer.class加载到虚拟机中):
package org.jivesoftware.openfire.starter;
import org.jivesoftware.openfire.XMPPServer;
public class StandaloneStarter {
public static void main(String[] args) {
XMPPServer server = new XMPPServer();
}}
还有一个关键的一步是Openfire的Home没有设定
在XMPPServer类中有一个locateOpenfire方法,这个方法就是设置openfireHome属性。
具体修改如下:
// 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("C:\\Program Files\\Openfire", jiveConfigName).getCanonicalFile();
}
catch (FileNotFoundException fe) {
// Ignore.
}
catch (IOException ie) {
// Ignore.
}
}
这部分默认是找当前路径,你可以修改它为你安装Openfire的路径,这样问题就解决了
分享到:
相关推荐
- 在“Arguments”选项卡中的“VM arguments”中设置系统属性`-DopenfireHome="${workspace_loc:openfire}/target/openfire"`,该属性指定了Openfire的安装路径。 - 在“Classpath”选项卡中添加必要的文件夹到...
- 在`Classpath`页面中添加资源文件夹`Openfire/src/i18n`和`Openfire/src/resources`。 4. 最后,在`Common`页面选择运行模式,保存配置后点击`Run`按钮即可在开发环境中启动Openfire服务。 #### 七、打包发布 ...
- **打包OpenFire**:将OpenFire项目导入Eclipse,运行`build.xml`文件进行打包。打包完成后,在`target`目录下生成打包文件。 - **启动OpenFire**:进入`target/openfire/bin`目录,双击`openfire.bat`(Windows...
在即时通讯系统中,Openfire和Spark的协同工作原理如下: - 所有的客户端到客户端的信息传递都需要通过Openfire服务器作为中继,服务器直接与数据库连接,存储和检索用户数据。 - 当服务器接收到用户请求时,会立即...
导购平台 功能点 ... 访客浏览发布内容,浏览评论,浏览聊天室消息; 会员发布图片,链接,文本(150字以内); 会员对发布评论,点赞,私藏,分享,加入推荐; ...会员私信黑名单,私信会话;...开发工具:iTerm,vim,eclipse,sublime,chrome
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...