是否可以在Java应用程序中嵌入Openfire服务器(版本3.7.0)?
我正在尝试在Eclipse中的服务器上运行集成测试。但是,因为Openfire处于独立模式(条件是它可以找到它的ServerStarter引导类),所以当服务器试图关闭时,它会调用System.exit(0),这是我不希望发生的事情。
有没有办法阻止这种情况的发生,也就是说,不故意阻止Openfire找到它的引导类?
发布于 2011-07-30 04:53:48
我有一个成功的方法,它相当简单,而且比尝试手动设置Openfire容易得多。
将Openfire安装到一台机器上(Mac、PC等),使用嵌入式数据库通过管理控制台进行设置,然后注释掉openfire.xml中的adminConsole。
将目录复制到要从中运行单元测试的位置。如果您希望确保精确的可重复性,那么明智的做法是在每次运行测试时压缩并解压缩目录。
确保所有jars(openfire、hsqldb、mail、bouncycastle、jasper等)都已添加。
现在,您应该能够正常启动和停止。Openfire确实有一个怪癖。因为它是面向单例的,所以即使关机了,该单例实例也会继续存在,所以如果您想在单元测试之类的地方使用它,就必须调用XMPPServer.getInstance()来检查实例是否已经存在,如果getInstance()返回null,则调用构造函数。
我希望这能有所帮助。
https://stackoverflow.com/questions/6465175
复制相似问题