`
zhangb310
  • 浏览: 63770 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

部署Openfire源码

    博客分类:
  • java
阅读更多
部署Openfire源码
1. 获取Openfire 3.5.1源代码
官方主页:http://www.igniterealtime.org/
(1)从官方网站上直接下载官方发布版本的源代码Openfire_3_5_1.zip源代码压缩包;
但是,2008年4月24官方发布的源代码中使用了import testng.xxx语句,所以额外需要下载并导入testng-5.8-jdk15.jar类库。否则会提示错误信息。
(2)也从官方网站上可以下载最新版(nightly builds),如源代码压缩包openfire_src_2008-05-31.zip
(3)使用Eclipse的版本控制插件SVN获取(检出为),具体步骤为:
* 在eclipse中,选择Windows->Open Perspective->Other
* 在弹出的窗口中,选择SVN Repository Exploring, 然后点OK

* 在SVN Repositories 视图中单击右键,选择 New->Repository Location...

*在弹出的New Repository Location对话框的输入URL文本框中输入:
http://svn.igniterealtime.org/svn/repos/openfire/trunk
然后,单击Finish. 你将会看到页面中出现URL地址
* 展开URL地址与openfire树形结构
* 在trunk上点击右键,选择Check Out(检出为),即可将源代码保存到您所指定的目录下。
* 用Create project from existing source新建工程,注意工程名要用openfire。
4. 创建openfire工程
将openfire_src_3_5_1.zip解压后,目录下除了READEME.html、LICENSE.html和changelog.html三个网页文件之外,有下面四个子目录。
build目录:build目录下收录的是生成安装文件(例如:rpm)所要的一些文件,例如JRE等。
resources目录:resources目录下收录的是一些为实现国际化(i18n)和本地化的一些编码文件(例如:英文,中文,法文,德文等)。
documentation目录:documentation目录下收录的是一些关于Openfire安装和配置的信息,但最终要的是这里有Openfire开发的Javadoc。
src目录:这个src文件夹就是我们想要的Openfire源代码了,这下面又有许多文件夹,我们只要Java文件夹就好,这里面实现的Openfire的核心功能,通过它就可以调试Openfire。
(1)从现有资源新建项目:File->New->Java Project,在弹出的New Java Project对话框中输入工程名:openfire(注意工程名要用openfire,因为源代码默认的工程名是openfire),选择Create project from existing source项,单击Browe,找到当前工作空间目录(\workspace目录)下存放源代码的openfire文件夹。(推荐初学者使用这样方法,因为编译、打包、调试等已经做好,可以直接使用)
(2)如果您是做二次开发,为了定制自己的服务器端,就可以采用这样方法:
* 新建工程:File->New->Project->Java Project,单击Next,在Project name文本框中输入工程名:openfire,单击Finish
* 解压后得到的openfire_src_3_5_1\src目录下所有内容复制到新建的工程目录workspace\openfire下
* 在Package Explorer视图中,右击openfire工程,选择Properties,在弹出的对话框中选择Libraries->Add JARs..,把openfire_src_3_5_1/build/lib目录下的*.jar类库全部添加进来;选择Source标签页,Add Folder..,选中src/java目录前的复选框,点击OK,点击OK按钮。
(在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项目没有打包部署,需要开发者自己完成相应的工作。
注意:新建工程之后,可能会出现一些警告信息,下面对此予以说明:
对于警告信息,是没有关系的。因为这些警告信息是使用1.5以上版本JDK时候才出现的,使用JDK1.4是不会出现这些警告信息的。因为这些代码中的有些是使用JDK 1.4编写的,而JDK1.4不支持泛型,而JDK 1.5和JDK1.6是支持泛型的。这些警告信息主要是提示将这些非泛型的代码修改为更加高级的方法——泛型,所以这些警告信息是不影响代码结果的。如果需要修改为泛型也是可以,使用泛型来处理相关的集合类。
5. 编译工程
openfire是用ant构建的,所以要先设置使得eclipse中每次编译都使用内置的ant工具,保证编译的正确执行。同时,要在Eclipse中设置为使用JDK作为JVM,如果使用JRE作为JVM,编译就会失败。
因为openfire在 Windows下是使用install4j打包成.exe格式的安装文件的,所以需要安装install4j。否则,在使用ant进行编译的时候,在 ant视图中可能会出现警告如下信息:taskdef class com.install4j.install4jtask cannot found。这主要是要安装用来打包Java应用程序的install4j.exe程序,而且将要安装到其默认的安装路径C:\Program Files\install4j下。
(1)在eclipse中点击Window->Show View->Ant,打开Ant窗口;
(2)在Ant 视图中,单击右键,在弹出的快捷菜单中选择Add Buildfiles..;
(3)在弹出的对话框中,展开openfire/build文件夹,选择build目录下的build.xml,点击OK;
(4)在Ant视图中, 展开Openfire XMPP Server,双击 openfire(default)编译工程
(5)如果在Console视图中显示“BUILD SUCCESSFUL”就表示编译成功。



7. 创建项目Builder
(1)在eclipse的菜单栏中,选择Run->Open Run Dialog...,在弹出的对话框左侧的树形结构中选择Java Application,单击右键,选择New创建启动配置。
(2) 在Run窗口的Main选项卡中, 修改Name文本框中的值,改成包含要启动的类的工程名openfire
(3)在Run窗口的Main选项卡中,点Browse按钮,选择openfire
(4)在Run窗口的Main选项卡中,点Search按钮,选择Main class为
org.jivesoftware.openfire.starter.ServerStarter,单击Apply按钮。(这是openfire的启动类)

(5)点击进入Arguments选项卡,在VM arguments文本框中输入
-DopenfireHome="${workspace_loc:openfire}/target/openfire"
单击Apply按钮。这个是用于eclipse执行java命令时传递的参数,这样openfire程序可以通过System.getProperty(“openfireHome”)得到openfire的本地位置。

(6)点击进入Classpath选项卡,选中User Entries,这样Advanced...就处于可用状态;点击Advanced...按钮,在Advanced Options页面,选择Add Folders, 单击OK。(默认情况下,已经将工程openfire添加到了这里,而不需要进行该项操作,如果有多个工程的时候才需要执行该项操作。)
选择openfire\src\i18n, 点OK按钮将这个文件夹加入到Classpath选项卡中;同样的方式把openfire\src\resources目录下的jar文件夹也加到Classpath选项卡中。
(11)在Common选项卡中,勾选Run复选框,单击Apply按钮。
设置完毕,这样以后在run这个工程的时候就会按照正确的配置进行了,debug的设置和run的设置类似,不再多说。
8. 运行并测试编译结果(openfire服务器)
(1)在Eclipse菜单中,单击Run->Run(或快捷方式Ctrl+F11),在Console试图中出现如下所示的信息。

(2)在Web浏览器中,输入http://127.0.0.1:9090/,如果可以出现配置的openfire的页面,就表示openfire编译、运行成功。
9. 自己定制openfire服务器时,在Eclipse对openfire源代码进行部署
参考网址:http://blog.csdn.net/racingtom/archive/2007/09/27/1803908.aspx
openfire的起始类为org.jivesoftware.openfire.starter.ServerStarter.java,但是直接运行此类却有问题,因为此类是针对Openfire安装包而设计的,此类的功能是将所用到的JAR文件解压并将class文件加载到虚拟机中,而我们要用的却是源代码中我们自己编译好的class文件。所以,我们需要一个新的启动类。
(1)一个简单的实现方法就是把src/java下的东西复制到我创建的java project下的src里了,并修改org.jivesoftware.openfire.starter包中ServerStarter.java类的源代码,具体如下(当然最好是与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();

}
}
这样程序就可以跑起来了,最后的问题就是配置文件路径的问题。
(2)配置文件路径
如果文件路径配置不正确(即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 = "conf" + File.separator + "openfire.xml";
// First, try to load it openfireHome as a system property.
if (openfireHome == null) {
String homeProperty = System.getProperty("openfireHome");
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("C:\\Program Files\\Openfire", jiveConfigName).getCanonicalFile();
}
catch (FileNotFoundException fe) {
// Ignore.
}
catch (IOException ie) {
// Ignore.
}
}
这部分默认是找当前文件路径,你可以修改它为你安装openfire的路径,这样问题就可以解决了。
(3)将新建的工程目录下src/web/WEB-INF/classes/openfire_init.xml导入到eclipse的查询路径里,如将src /web/WEB-INF/classes目录作为eclipse的源目录,这样openfire_init.xml自动copy 到$openfire_home/classses下面,将openfire_init.xml中的openfireHome设置为$openfire_home
修改org.jivesoftware.openfire.starter.ServerStarter中的如下两个field,
private static final String DEFAULT_LIB_DIR = "../lib";
private static final String DEFAULT_ADMIN_LIB_DIR = "../plugins/admin/webapp/WEB-INF/lib";
改成:
private static final String DIR_PREFIX = "$openfire_home";
// to be your own openfire_home
private static final String DEFAULT_LIB_DIR = DIR_PREFIX + "lib";
private static final String DEFAULT_ADMIN_LIB_DIR = DIR_PREFIX + "plugins/admin/webapp/WEB-INF/lib";
现在还不知道这里为什么要这样做?????
10. 打包openfire编译结果
(1)编译成功之后,可以将openfire打包,以便安装和使用。
(2)在源码里面有一个文件夹里有个打包的图标,双击那个图标,install4j就会读取你在build.xml文件里的信息、在里面完成做界面等打包工作。

转自:http://hi.baidu.com/bareearthling/item/1be9991c9ea8c7d8be90425d
分享到:
评论

相关推荐

    openfire 源码 Eclipse部署

    在部署Openfire源码之前,首先需要获取到其源代码。有两种主要方式可以获得Openfire的源码: 1. **从官方网站下载**:访问[Ignite Realtime官方网站](http://www.igniterealtime.org/),直接下载Openfire的源代码包`...

    openfire源码部署开发

    ### Openfire源码部署开发详解 #### 一、Openfire简介 Openfire是一款开源的即时通讯服务器,基于XMPP协议栈。它支持多种客户端,并且能够处理大量的并发连接。Openfire以其灵活性、可扩展性和易用性而受到广泛欢迎...

    Openfire源码部署与开发.doc

    ### Openfire源码部署与开发知识点详解 #### 一、Openfire简介 Openfire是一款开源的实时通信服务器,基于XMPP协议。它提供了一个高效、可扩展的消息传递平台,适用于企业级即时通讯应用。Openfire支持多种客户端接...

    openfire3.9.1 源码部署及运行

    在本文中,我们将深入探讨如何部署和运行Openfire 3.9.1的源码,以及在这个过程中可能遇到的关键知识点。 首先,我们需要从官方网站下载Openfire 3.9.1的源代码。这通常是一个.zip或.tar.gz格式的压缩包,包含所有...

    openfire3.9.3 源码部署安装文档

    OpenFire 3.9.3 源码部署安装指南 OpenFire 是一个基于 XMPP 协议的即时通讯服务器,它提供了实时的消息传递、文件传输、音视频会议等功能。下面是 OpenFire 3.9.3 源码部署安装的详细步骤: 一、准备阶段 1. ...

    openfire源码

    以下是对Openfire源码及其相关知识点的详细解析: 1. **XMPP协议**:XMPP(Extensible Messaging and Presence Protocol,可扩展消息传递及存在协议)是一种基于XML的开放标准,用于实现实时通信和协作。Openfire是...

    编写Openfire开发插件、部署源码

    4. **下载Openfire源码和安装程序**:从IgniteRealtime官方网站下载Openfire的安装程序和源代码。 5. **导入Openfire源文件到Eclipse**:将解压后的`openfire_src`文件夹复制到Eclipse的工作空间,然后在Eclipse中...

    源码部署JAR包

    在部署Openfire源码时,通常需要遵循以下步骤: 1. **获取源码**:从官方网站或GitHub仓库下载Openfire的源码。 2. **构建环境**:确保本地已安装Java Development Kit(JDK)并配置好环境变量。 3. **设置构建工具...

    openfire webchat源码部署相关jar

    在部署Openfire WebChat时,需要用到一些特定的JAR文件,这些文件在描述中已经列出,包括jasper.jar、jasper-compiler-jdt.jar、jasper-el.jar和jasper-jdt.jar。这些文件在Java服务器页面(JSP)的编译和运行过程中...

    openfire-4.5.0源码

    通过阅读Openfire源码,开发者可以了解即时通讯系统的底层实现,学习如何处理并发连接、优化性能和保证安全性。此外,源码中的注释和文档也能帮助理解设计决策和最佳实践。对于想要二次开发或自定义功能的开发者来说...

    openfire 源码部署

    3. 不使用默认位置,指定到Openfire源码文件夹。 第四步,解决导入工程后的错误: 1. 解决clustering插件的错误,需在src/plugins/clustering目录下新建lib文件夹,放入coherence.jar, coherence-work.jar, ...

    Openfire源代码在Eclipse3.5.2中的部署、编译、运行、部署安装

    ### Openfire 源代码在 Eclipse 3.5.2 中的部署、编译、运行与安装 #### 一、准备工作 在开始之前,需要确保已经下载了 Openfire(版本 3.6.4)、Spark(版本 2.5.8)以及 Smack(版本 3.1.0)。由于 Spark 的源码...

    openfire源码缺少的bouncycastle.jar包

    在开发或部署Openfire时,可能会遇到依赖库缺失的问题,例如“bouncycastle.jar”包。Bouncy Castle是一个Java安全框架,提供了大量的加密算法、协议以及ASN.1编码解码等功能。 Bouncy Castle主要包含以下组件: 1....

    openfire环境搭建说明

    ### Openfire环境搭建知识点 #### 一、Openfire简介与工具准备 - **Openfire**:Openfire是一款基于XMPP协议...通过按照这些步骤操作,可以成功地在本地环境中部署Openfire服务器,并为进一步的开发和测试提供基础。

    openfire3.10.0源码编译可能缺少的jar包

    openfire3.10.0源码编译可能缺少的jar包,具体的源码编译部署细节请看博文http://blog.csdn.net/haunghui6579/article/details/44513481

    第一个openfire插件源码及说明

    7. **打包与部署** 使用Maven或Gradle构建插件项目,生成JAR文件。将此JAR文件复制到Openfire服务器的`plugins/`目录下,Openfire会自动检测并加载新的或更新的插件。 8. **测试与调试** 启动Openfire服务器,...

    openfire3.7.1在myEclipse的源码部署

    将Openfire源码解压缩到一个自定义的目录,例如E:\个人知识库\开发项目\openFire\objects\openfire_src。在myEclipse中新建一个Java项目,命名为“openfire”,并指定源码路径为刚才解压的目录。 接下来,解决编译...

    Openfire源代码在Eclipse3.5.2中的部署、编译、运行、配置安装.doc

    《Openfire源代码在Eclipse3.5.2中的部署、编译与运行》 Openfire是一款基于Java的开源即时通讯服务器,它提供了强大的聊天、会议和协作功能。本教程将指导你如何在Eclipse 3.5.2环境下部署、编译、运行并配置...

Global site tag (gtag.js) - Google Analytics