openfire及其源码的开发和部署

一、openfire的Eclipse环境搭配

     1、官网http://www.igniterealtime.org/

     2、Eclipse环境(包括JavaSE),Openfire的源代码包(例如:openfire_src_3_3_2.zip,可到jivesoftware官方网站下载),Mysql数据库V5以上(当然可以用其他数据库,但在此例中选用Mysql作为Openfire的后台数据库)。

     3、将openfire_src_3_3_2.zip的源码包解压到一个目录里(包含四个子文件夹)

 

     4、 其中有个 src目录:这个src文件夹就是我们想要的Openfire源代码了

 

     5、在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中,这样省去了很多工作。

    6、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();

    }}

7、还有一个关键的一步是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的路径,这样问题就解决了
 

 二、openfire的svn源码下载

1、下载路径:

http://svn.igniterealtime.org/svn/repos/openfire/trunk

2、结点类包


       起点    org.jivesoftware.openfire.starter.ServerStarter

       服务器  org.jivesoftware.openfire.XMPPServer

       用户验证包 里面有AuthProvier接口、几个实现类。。。

               org.jivesoftware.openfire.auth

       用户   org.jivesoftware.openfire.user

       组     org.jivesoftware.openfire.group

       好友列表org.jivesoftware.openfire.roster

      开发插件会用到的接口和包

          org.jivesoftware.openfire.container.Plugins

          org.xmpp.component.Component

          org.jivesoftware.openfire.event
          org.jivesoftware.openfire.handler

      拦截器

          org.jivesoftware.openfire.interceptor、

三、openfire的Eclipse详细配置和编译

 

1. 从现有资源新建项目

 

(1) File->New->Java Project
(2) 在弹出的New Java Project对话框中输入工程名:openfire_src
(3) 选择Create project from existing source项,单击Browe,找到之前的解压目录 openfire_src


2. 编译工程


 

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_src/build文件夹,选择build目录下的build.xml,点击OK
(4) 在Ant视图中, 展开Openfire XMPP Server,双击 openfire_src(default)编译工程
(4) 如果在Console视图中显示“BUILD SUCCESSFUL”就表示编译成功


3. 创建项目Builder
(1) 在eclipse的菜单栏中,选择Run->Open Run Dialog...,在弹出的对话框左侧的树形结构中选择Java Application,单击右键,选择New创建启动配置
(2) 在Run窗口的Main选项卡中, 修改Name文本框中的值,改成包含要启动的类的工程名openfire_src
(3) 在Run窗口的Main选项卡中,点Browse按钮,选择openfire_src
(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/src/i18n, 点OK按钮将这个文件夹加入到Classpath选项卡中;同样的方式把openfire_src/src/resources/jar目录也加到 Classpath选项卡中。
(7) 在Common选项卡中,勾选Run复选框,单击Apply按钮。
设置完毕,这样以后在run这个工程的时候就会按照正确的配置进行了,debug的设置和run的设置类似,不用多说。

 
4. 运行并测试编译结果(openfire服务器)
(1) 在Eclipse菜单中,单击Run->Run(或快捷方式Ctrl+F11),在Console试图中出现如下所示的信息。
(2) 在Web浏览器中,输入http://127.0.0.1:9090/,如果可以出现配置的openfire的页面,就表示openfire编译、运行成功。

5. 自己定制openfire服务器时,在Eclipse对openfire源代码进行部署
openfire 的起始类为org.jivesoftware.openfire.starter.ServerStarter.java,但是直接运行此类却有问题,因为此类是针对Openfire安装包而设计的,此类的功能是将所用到的JAR文件解压并将class文件加载到虚拟机中,而我们要用的却是源代码中我们自己编译好的class文件。所以,我们需要一个新的启动类。
package org.jivesoftware.openfire.starter;

import org.jivesoftware.openfire.XMPPServer;

public class StandaloneStarter {
public static void main(String[] args) {
XMPPServer server = new XMPPServer();
}
}
这样程序就可以跑起来了,最后的问题就是配置文件路径的问题。
a) 在StandaloneStarter类的启动选项(VM arguments)中加入-DopenfireHome="${workspace_loc:openfire}/target/openfire",具体方法参见上文。
b) 点击进入Classpath选项卡,选中User Entries,这样Advanced...就处于可用状态;点击Advanced...按钮,在Advanced Options页面,选择Add Folders, 单击OK。(默认情况下,已经将工程openfire添加到了这里,而不需要进行该项操作,如果有多个工程的时候才需要执行该项操作。)选择 openfire_src/src/i18n, 点OK按钮将这个文件夹加入到Classpath选项卡中;同样的方式把openfire_src/src/resources/jar目录也加到 Classpath选项卡中。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wbw1985/archive/2010/04/15/5484350.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,让我来回答你关于openfire开发中消息拦截器的问题。 消息拦截器是openfire中的一个重要功能,它可以在消息传递的过程中拦截消息并进行处理。在openfire中,消息拦截器通常用于实现一些特殊的业务逻辑,例如消息过滤、消息转发、消息加密等。 在openfire中,实现一个消息拦截器非常简单。我们只需要创建一个类,实现org.jivesoftware.openfire.interceptor.PacketInterceptor接口,并重写interceptPacket方法。在interceptPacket方法中,我们可以对消息进行拦截和处理。 下面是一个简单的示例代码: ```java public class MyInterceptor implements PacketInterceptor { @Override public void interceptPacket(Packet packet, Session session, boolean incoming, boolean processed) throws PacketRejectedException { if (packet instanceof Message) { Message message = (Message) packet; // 在此处对消息进行拦截和处理 // ... } } } ``` 在上述代码中,我们创建了一个名为MyInterceptor的类,实现了PacketInterceptor接口,并重写了interceptPacket方法。在方法中,我们首先判断消息类型是否为Message类型,如果是,则对消息进行拦截和处理。 最后,我们需要将拦截器注册到openfire中。我们可以在openfire的配置文件openfire.xml中添加如下配置: ```xml <interceptor> <class>com.example.MyInterceptor</class> </interceptor> ``` 这样,我们就成功地将消息拦截器注册到了openfire中。当有消息传递时,openfire会自动调用我们的拦截器来进行处理。 希望这个回答对你有帮助!如果你还有其他问题,可以继续问我。 ### 回答2: openfire开发中的消息拦截器是一种机制,用于拦截、处理和修改即将发送或接收的XMPP消息。它可以在服务器端应用程序中实现,允许开发人员实现特定的业务逻辑或自定义需求。 通过编写和配置消息拦截器,我们可以在用户发送消息之前或者接收之后对其进行处理。拦截器可以用于各种用途,比如实现消息过滤、安全验证、内容修改和日志记录等。 当有消息发送或接收时,openfire会按照事先定义好的顺序依次调用每个拦截器。每个拦截器都可以对消息进行修改、删除或添加元素,并且可以决定是否继续传递给下一个拦截器。通过这种方式,我们可以对消息进行灵活的处理。 在开发过程中,我们可以使用openfire提供的拦截器接口(org.jivesoftware.openfire.interceptor.PacketInterceptor)来实现自定义的拦截器。该接口定义了两个方法,beforeInterception函数用于在消息发送之前对其进行处理,afterInterception函数则用于在消息接收之后对其进行处理。 通过实现这两个方法,我们可以访问消息的各个属性和元素,如发送者、接收者、消息内容等,并根据需求进行相应的操作。例如,我们可以检查消息内容是否违规,如果违规则删除或修改消息的内容,或者对发送消息的用户进行验证等操作。 总之,消息拦截器是openfire开发中非常有用的功能,能够帮助开发人员对即将发送或接收的消息进行灵活的处理和管理,以满足各种业务需求。 ### 回答3: Openfire是一个开源的实时协作服务器,可以用于构建聊天、即时通讯和实时协作的应用程序。消息拦截器是Openfire提供的一个功能,可以在消息传递的过程中拦截并处理消息。 消息拦截器可以用于在用户发送或接收消息时进行一些特定的处理操作。开发者可以通过实现Openfire提供的消息拦截器接口,在特定的时机中对消息进行拦截和处理。通过对拦截器的使用,可以提供一些自定义的功能,例如消息过滤、消息加密、消息记录等。 消息拦截器的工作流程如下: 1. 在Openfire配置文件中指定消息拦截器的类名或类路径。 2. 当用户发送或接收消息时,Openfire会调用每个已配置的拦截器。 3. 拦截器可以在消息传递的过程中对消息进行检查、修改或阻止传输。 4. 当拦截器处理完毕后,将会返回一个处理状态给Openfire。 5. 如果有多个拦截器,Openfire会按照配置的顺序依次调用。 开发者可以根据自己的需求实现自定义的消息拦截器。在实现拦截器时,需要实现Openfire提供的Interceptor接口,并重写其中的方法。拦截器的具体功能由开发者自己决定,例如可以通过拦截器实现消息的过滤、加密、解密、记录、转发等。 总之,Openfire的消息拦截器功能为开发者提供了一个定制化的处理消息的方式。通过拦截器,开发者可以对消息进行自定义处理,实现更加灵活和安全的消息传递。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值