台湾饭团培训:eclipse 部署 openfire 3.7.1

来源:百度文库 编辑:中财网 时间:2024/04/26 03:02:04
eclipse 部署 openfire 3.7.1

2011年11月28日 星期一 20:00转载自 derekwendy最终编辑 derekwendy

       最近接触xmpp协议和openfire服务器,文档貌似不怎么丰富,中文资料就更加屈指可数了。这么多中文博客,我可没看到一篇像样的。我们在一个软件上做二次开发,最关心的肯定是如何方便地进行调试,特别是像openfire这种,如果不知道如何调试的话,绝对不是一般人能忍受开发过程当中的愤怒的。

        好了,该进入正题了,本文就整合官网给出的两个帖子以及个人的研究探索,给出完整的开发和调试方法,供初学者参考。http://community.igniterealtime.org/docs/DOC-1020,此文介绍如何在eclipse中导入openfire并调试,除了导入代码方式以外,基本上适用,我用的是eclipse3.6,不适用文章中的“Create project from existing source”,点击File->New->Java project,去掉use default location勾选,browse到你下载的openfire源码根目录,确定即可导入。

        项目导入之后就要build openfire了,菜单window->show view->ant,add build files, 添加build.xml,之后从视图中选择目标openfire[default],之后就会很顺利地创建了target和work目录了。接下来就是要将openfire跑起来,这个也相对步骤都一些,不过刚才给定的地址都已经有说明,这里就简单翻译一下。点debug->Debug configurations->Java Application,new一个,名字任意,project选刚刚导入的openfire,Main class 搜索ServerStarter(org.jivesoftware.openfire.starter.ServerStarter);转到Arguments标签,VM arguments添加一句-DopenfireHome="${workspace_loc:openfire}/target/openfire",黄底的是你刚才导入的project名;转到Classpath标签,在User Entries添加几个目录,分别是openfire/src/i18n,openfire/src/resources/jar,openfire/src/test/resources(这个文件夹官网没提到,但是还是需要的):

转到common标签,勾选debug和run,其实不勾也行,看你自己喜欢咯,然后apply,debug就可以跑起来了。

 

        当你的openfire跑起来了,其实就已经搭建好调试环境了,ServerStarter加个断点试试!同时,这说明你已经具备调试插件的环境了,接下来就说下插件如何调试,以及如何不使用openfire的默认目录结构,使用自定义项目和openfire整合调试。

        在openfire项目中,我们可以看到已经有很多现成的插件,目录结构很明显src/plugins/${plugin}。一个插件的目录结构也很简单:

        http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html?1312598802  这里也有介绍如何创建你自己的插件,不过不在本文的介绍范围,就忽略了,文章也是相当精简,说它够精简好,也可以说它不好,因为初学者只看这些可能觉得过于精简。

        http://community.igniterealtime.org/docs/DOC-1200 这篇文章介绍如何build 插件,字很少,估计也看得懂。这里我也简单翻译一下吧。选Run->External tools->ant build,new一个,名字任意,buildfile选择上面提到的build.xml,如果你要单独build某个插件的话,Arguments需要填写一下,如-Dplugin=xmldebugger,这就告诉ant我只需要build xmldebugger这个插件,转到Targets标签,选择plugin目标,Apply,run就可以了,当你的插件build好以后,在target目录和work目录都有体现了,已经可以调试,并且我发现修改了java文件不需要重启openfire就可以调试。如果你想build所有plugin的话,就不需要刚才提到的Arguments了,在Targets标签选择plugins,就可以一次性build所有plugin,不过本人不推荐这种做法,因为这样log啊什么的都多很多,而且使得调试变得麻烦,建议大家只选择自己需要的插件来build。

        下面就是本文的价值所在,如果我们不喜欢按照openfire的默认目录结构来开发插件,那该怎么办呢?特别像我这种习惯使用maven2多项目调试的人,更受不了结合那么紧密的目录结构。我们要使用自定义项目作为openfire插件来调试,有几个主要步骤:

        第一就是要创建我们自己的项目,当然最后打包的结果要跟openfire要求的结构一致才能调试,创建项目的过程这里就不说了,如果你使用的是maven2,可以参考一下此插件,能协助你更容易地build openfire插件哦!

view source print?1<plugin> 2        <groupId>com.reucon.maven.pluginsgroupId> 3        <artifactId>maven-openfire-pluginartifactId> 4        <version>1.0.2version> 5        <extensions>trueextensions> 6        <configuration> 7        configuration> 8plugin>

        第二就是要在openfire项目中创建我们的plugin目录,需要的文件在上面的图也就说明了。如果你有自己的servlet的话,就要在web-custom.xml中声明一下哦,所有插件的servlet最后都由org.jivesoftware.openfire.container.PluginServlet来管理,呵呵,当你调试你的servlet的时候就别忘了看看这个类了,不然你会抓狂的。我们的plugin目录,建议创建一个lib目录,将我们的maven工程依赖的包都加进去,那就不用研究ant和maven2的交互,毕竟我们还是比较推崇敏捷,花太多时间在这些细节方面就不太好了。

        第三,也是最重要的一点,我们需要修改一下build.xml文件,来支持我们的自定义工程,我们修改的东西不多,主要就是让ant把我们外部工程的源文件编译好,还有我们依赖的非java文件,如spring配置文件等,需要copy到目标目录中的。修改的目标就是plugin,在javac处加入我们的java目录:

加入我们的非java的resources:

        第四,用刚才介绍的build plugin方法build你自己的plugin。就是这么简单几步,就可以实现你的项目和openfire整合调试了。



(###)