Unloading SWFs: Loader.unload() versus Loader.unloadAndStop() Methods

本文探讨了Adobe Flash Player 9中Loader卸载SWF时的内存管理问题,特别是当SWF包含声音文件时的问题,并提供了解决方案,包括使用Loader.unloadAndStop方法和回退到AS2.0。
内存确实释放了一部分。但是还有一部分会累加。
地址:[url]http://www.flashandmath.com/intermediate/swfload/unloading.html[/url]


这样的一种情况:

使用Loader去load一个swf:

var fileURL:String = “assets/test.swf”
var swfLoader:Loader = new Loader();
swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE swfLoaded);
swfLoader.load(new URLRequest(fileURL));

function swfLoaded(evt:Event):void{
addChild(swfLoader);
}


这些是加载外部swf在AS3.0中最基本的代码,如果你在舞台上有一个按钮点击时去调用 swfLoader.unload(),按道理的话应该会把加载到swfLoader里面的test.swf给清除。

问题产生: 如果test.swf中包含声音,则会出现调用unload方法后声音还是存在。

通常情况下会怀疑自己的代码是不是有问题,或者还是别的什么。。。但是即使在最简情况下也出现这样的问题,那就要追寻缘由了。在网上找了很多相关的文章,大部分都给了这个链接: http://www.gskinner.com/blog/archives/2008/04/failure_to_unlo.html gskinner,很强的团队,以后再介绍了。里面体介绍了问题出现的情况。

unload是flash player9的一个bug,出现的情况就是flash player无法回收 loader中load的元件,unload做的工作只是将load的元件移除Loader的display list(显示列表)。而只要load的swf中包含复杂的代码,或者说有任何事件侦听代码就无法使将其回收,当然也就无法回收他占用的内存。如果有大量的加载的话很有可能让程序崩溃。然而如果swf中有声音更是直接影响。总不能停止所有声音吧。

解决方法:

读gskinner的那篇文章,你会发现他并没有直接给出解决方法,只有一些建议。读了评论你会发现更是有意思,开始大部分是夸奖,到了后来却很多是抱怨,说什么只是谈,没有解决方法阿什么的,而且会发现没人说自己顺利解决了问题。看样子真是一个很大的bug。从我个人来说我试了其中的一些方法,也没有成功。但是其中有一种方法值得我们研究,叫“GC“,垃圾回收机制强行执行,有两篇文章可以参考:http://bbs.actionscript3.cn/thread-234-1-1.html 还有就是:http://www.ultrashock.com/forums/random-chat/failure-to-unload-flash-player-9s-dirty-secret-99237.html

主要代码:

package ...
{
import flash.display.Loader;
import flash.net.LocalConnection;
public class CustomLoader extends Loader
{
override public function unload():void
{
super.unload();
try
{
new LocalConnection().connect( "FORCE_GC" );
new LocalConnection().connect( "FORCE_GC" );
}
catch( err:Error )
{}
}
}
}


我试了,虽然没有成功,但是很有启发,就是使得内部抱错,然后让flash的垃圾回收机制去回收,那样就达到了清除的目的。值得研究。

我个人的解决方法:

1、如果你愿意接受失去flash player 9.0用户的风险,你可以使用adboe在flash player 10中新发布的api,Loader.unloadAndStop,可以说是对于9.0这个bug的一个郑重的补救,详细使用可以参考:http://kb.adobe.com/selfservice/viewContent.do?externalId=kb403670&sliceId=2
#

2、如果你用过AS2.0你会发现2.0中也有一个类似的这样的方法,加载使用的是loadMovie 移除用的方法叫做:unloadMovie, 而且没有像AS3.0这样的bug。由于我在给新浪做广告播放器,由于公司不可能冒险无法清除内容出错(如果用户没有flash palyer 10),所以可以接收的解决方法是有音频的广告swf使用2.0语言来发布。而我这边开发端的方法是这样:创建一个广告swf加载容器(AS2.0语言发布)专门用于加载带声音的swf,这样可以使用unloadMovie来实现无bug移除。而对于“swf加载容器”与主容器(AS3.0语言发布)的通信,则可以通过 LocalConnection 来实现两种不同虚拟机的flash版本文件之间通信,详细代码参考以下帮助文档吧(位置: Programming Actionscript 3.0 Networking and communication >Connecting to other Flash Player instance )
[root@yfw ~]# cd /opt/openfire [root@yfw openfire]# cat /opt/openfire/plugins/hello-plugin/classes/plugin.xml <?xml version="1.0" encoding="UTF-8"?> <plugin> <className>com.example.restapi.RestApiPlugin</className> <name>Hello Plugin</name> <description>A minimal working plugin</description> <version>1.0.0</version> <author>Admin</author> <minServerVersion>4.0.0</minServerVersion> <maxServerVersion>5.0.0</maxServerVersion> </plugin> [root@yfw openfire]# grep -i "pluginmonitor\|hello-plugin\|found new plugin\|loading plugin" /opt/openfire/logs/openfire.log 2025.05.17 21:30:03.576 WARN [PluginMonitorTask-2]: org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console: CertificateStoreManager has not been initialized yet. HTTPS will be unavailable. 2025.05.17 21:30:04.573 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Misses 2025.05.17 21:30:04.573 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Hits 2025.05.17 21:30:04.593 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.AdminConsolePlugin - Admin console listening at http://localhost:9090 2025.05.17 21:30:04.593 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'admin'. 2025.05.17 21:35:44.701 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'search-1.7.4'. 2025.05.17 21:35:44.704 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 21:35:44.827 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_c2s] - Started. 2025.05.17 21:35:44.835 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_c2s-directTLS] - Started. 2025.05.17 21:35:44.839 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_s2s] - Started. 2025.05.17 21:35:44.842 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_s2s-directTLS] - Started. 2025.05.17 21:35:44.846 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component] - Started. 2025.05.17 21:35:44.853 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component-directTLS] - Started. 2025.05.17 21:35:44.856 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager] - Started. 2025.05.17 21:35:44.858 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager-directTLS] - Started. 2025.05.17 21:35:44.866 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.EncryptionArtifactFactory - Creating new SslContextFactory instance 2025.05.17 21:35:44.876 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpSessionManager - Starting instance 2025.05.17 21:35:44.918 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpBindManager - HTTP bind service started 2025.05.17 21:39:53.730 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for DNS Records 2025.05.17 21:39:53.759 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.EncryptionArtifactFactory - Creating new SslContextFactory instance 2025.05.17 21:39:54.818 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Misses 2025.05.17 21:39:54.819 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Hits 2025.05.17 21:39:54.868 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.AdminConsolePlugin - 管理控制台正在侦听: 2025.05.17 21:39:54.869 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'admin'. 2025.05.17 21:39:54.951 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'search-1.7.4'. 2025.05.17 21:39:54.951 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 21:39:55.051 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_c2s] - Started. 2025.05.17 21:39:55.057 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_c2s-directTLS] - Started. 2025.05.17 21:39:55.065 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_s2s] - Started. 2025.05.17 21:39:55.070 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_s2s-directTLS] - Started. 2025.05.17 21:39:55.074 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component] - Started. 2025.05.17 21:39:55.080 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component-directTLS] - Started. 2025.05.17 21:39:55.083 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager] - Started. 2025.05.17 21:39:55.085 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager-directTLS] - Started. 2025.05.17 21:39:55.093 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.EncryptionArtifactFactory - Creating new SslContextFactory instance 2025.05.17 21:39:55.098 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpSessionManager - Starting instance 2025.05.17 21:39:55.142 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpBindManager - HTTP bind service started 2025.05.17 21:41:57.782 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for DNS Records 2025.05.17 21:41:57.846 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.EncryptionArtifactFactory - Creating new SslContextFactory instance 2025.05.17 21:41:58.954 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Misses 2025.05.17 21:41:58.955 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Hits 2025.05.17 21:41:59.001 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.AdminConsolePlugin - 管理控制台正在侦听: 2025.05.17 21:41:59.004 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'admin'. 2025.05.17 21:41:59.085 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'search-1.7.4'. 2025.05.17 21:41:59.088 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 21:41:59.185 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_c2s] - Started. 2025.05.17 21:41:59.193 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_c2s-directTLS] - Started. 2025.05.17 21:41:59.203 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_s2s] - Started. 2025.05.17 21:41:59.208 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_s2s-directTLS] - Started. 2025.05.17 21:41:59.213 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component] - Started. 2025.05.17 21:41:59.220 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component-directTLS] - Started. 2025.05.17 21:41:59.223 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager] - Started. 2025.05.17 21:41:59.227 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager-directTLS] - Started. 2025.05.17 21:41:59.236 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.EncryptionArtifactFactory - Creating new SslContextFactory instance 2025.05.17 21:41:59.244 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpSessionManager - Starting instance 2025.05.17 21:41:59.294 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpBindManager - HTTP bind service started 2025.05.17 21:52:35.377 WARN [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Ignoring plugin 'websocket': compatible with server versions up to but excluding 4.2.0. Current server version is 4.9.2. 2025.05.17 21:59:48.896 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 缺少 user-status 的数据库架构。正在尝试安装… 2025.05.17 21:59:48.951 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 数据库更新成功。 2025.05.17 21:59:48.988 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'userstatus-1.3.0'. 2025.05.17 21:59:48.991 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:00:24.822 ERROR [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginServlet - An unexpected problem occurred while attempting to register servlets for plugin 'org.jivesoftware.openfire.plugin.UserServicePlugin@5e5a5b6'. at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:380) [xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:368) [xmppserver-4.9.2.jar:4.9.2] 2025.05.17 22:00:24.849 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'userservice-2.1.3'. 2025.05.17 22:00:24.853 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:00:37.517 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'xmppweb-0.10.3 Release 1'. 2025.05.17 22:00:37.518 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:03:49.505 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 缺少 fastpath 的数据库架构。正在尝试安装… 2025.05.17 22:03:49.937 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 数据库更新成功。 2025.05.17 22:03:50.050 WARN [PluginMonitorExec-2]: org.jivesoftware.database.SequenceManager - Autocreating jiveID row for type '24' 2025.05.17 22:03:50.244 WARN [PluginMonitorExec-2]: org.jivesoftware.database.SequenceManager - Autocreating jiveID row for type '21' 2025.05.17 22:03:50.852 WARN [PluginMonitorExec-2]: org.jivesoftware.database.SequenceManager - Autocreating jiveID row for type '20' 2025.05.17 22:03:50.882 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.fastpath.FastpathPlugin - start webchat 2025.05.17 22:03:50.904 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'fastpath-4.5.1'. 2025.05.17 22:03:50.906 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:04:14.519 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'justmarried-1.3.0'. 2025.05.17 22:04:14.521 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:04:35.528 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 缺少 mucextinfo 的数据库架构。正在尝试安装… 2025.05.17 22:04:35.566 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 数据库更新成功。 2025.05.17 22:04:35.572 INFO [PluginMonitorExec-2]: org.igniterealtime.openfire.plugin.mucextinfo.MucExtInfoPlugin - Replacing original IQ Disco Info handlers for all MUC services with proxies. 2025.05.17 22:04:35.579 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'mucextinfo-1.0.0'. 2025.05.17 22:04:35.580 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:04:45.096 ERROR [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - An exception occurred while loading plugin 'nodejs': at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:380) [xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:368) [xmppserver-4.9.2.jar:4.9.2] 2025.05.17 22:05:18.936 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for pushnotification.users 2025.05.17 22:05:18.936 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for pushnotification.messages 2025.05.17 22:05:18.938 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 缺少 pushnotification 的数据库架构。正在尝试安装… 2025.05.17 22:05:18.983 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 数据库更新成功。 2025.05.17 22:05:18.994 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'pushnotification-1.0.1'. 2025.05.17 22:05:19.003 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:06:10.835 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'userimportexport-2.7.1'. 2025.05.17 22:06:10.838 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:06:19.088 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'usercreation-1.4.1'. 2025.05.17 22:06:19.090 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:06:43.160 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'jabberbrowsing-1.0.1'. 2025.05.17 22:06:43.163 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:07:28.588 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'nodejs' was removed from the file system. 2025.05.17 22:07:28.601 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'NodeJs' 2025.05.17 22:07:28.602 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/nodejs/lib/nodejs-0.1.1.jar 2025.05.17 22:07:30.696 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'nodejs'. 2025.05.17 22:11:14.780 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'presence-1.7.3'. 2025.05.17 22:11:14.783 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:11:40.365 INFO [PluginMonitorExec-2]: uk.ifsoft.openfire.plugins.pade.PadePlugin - start pade server localhost:7443 2025.05.17 22:11:40.367 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for URL Source Content 2025.05.17 22:11:40.378 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'PADE' SASL mechanism. 2025.05.17 22:11:40.378 INFO [PluginMonitorExec-2]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Create recordings folder 2025.05.17 22:11:40.379 INFO [PluginMonitorExec-2]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Starting Openfire Meetings 2025.05.17 22:11:40.384 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Room Properties 2025.05.17 22:11:40.393 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - No pre-existing 'jvb' user detected. Generating one. 2025.05.17 22:11:40.495 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJvbWrapper - Successfully initialized Jitsi Videobridge. 2025.05.17 22:11:40.510 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - No pre-existing 'focus' user detected. Generating one. 2025.05.17 22:11:40.566 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - Adding 'focus' user as a sysadmin to the 'conference' MUC service. 2025.05.17 22:11:40.572 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJicofoWrapper - Initializing Jitsi Focus Component (jicofo)... 2025.05.17 22:11:40.673 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJicofoWrapper - Successfully initialized Jitsi Focus Component (jicofo). 2025.05.17 22:11:40.680 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - Initialized public web socket for /colibri-ws web socket 2025.05.17 22:11:44.017 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - OfMeet Plugin - Initialize IQ handler 2025.05.17 22:11:46.516 INFO [PluginMonitorExec-2]: org.quartz.impl.StdSchedulerFactory - Using default implementation for ThreadExecutor 2025.05.17 22:11:46.518 INFO [PluginMonitorExec-2]: org.quartz.simpl.SimpleThreadPool - Job execution threads will use class loader of thread: PluginMonitorExec-2 2025.05.17 22:11:46.531 INFO [PluginMonitorExec-2]: org.quartz.core.SchedulerSignalerImpl - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl 2025.05.17 22:11:46.531 INFO [PluginMonitorExec-2]: org.quartz.core.QuartzScheduler - Quartz Scheduler v.2.3.2 created. 2025.05.17 22:11:46.532 INFO [PluginMonitorExec-2]: org.quartz.simpl.RAMJobStore - RAMJobStore initialized. 2025.05.17 22:11:46.533 INFO [PluginMonitorExec-2]: org.quartz.core.QuartzScheduler - Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED' 2025.05.17 22:11:46.533 INFO [PluginMonitorExec-2]: org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties' 2025.05.17 22:11:46.533 INFO [PluginMonitorExec-2]: org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.3.2 2025.05.17 22:11:46.533 INFO [PluginMonitorExec-2]: org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started. 2025.05.17 22:11:46.535 ERROR [PluginMonitorExec-2]: org.jivesoftware.openfire.muc.MultiUserChatManager - A database exception occurred while trying to load the ID for MUC service 'lobby' from the database. at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:380) [xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:368) [xmppserver-4.9.2.jar:4.9.2] 2025.05.17 22:11:46.535 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.muc.MultiUserChatManager - Creating MUC service 'lobby' 2025.05.17 22:11:46.535 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Rooms 2025.05.17 22:11:46.564 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Room Statistics 2025.05.17 22:11:46.625 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Rescheduling user idle task, recurring every PT15M 2025.05.17 22:11:46.625 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - 多用户聊天域:lobby.localhost 2025.05.17 22:11:46.637 INFO [PluginMonitorExec-2]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Creating webauthn RelyingParty 2025.05.17 22:11:46.697 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'pade-1.8.4'. 2025.05.17 22:11:46.701 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:30:01.079 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'clientcontrol-2.1.9'. 2025.05.17 22:30:01.081 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 23:29:36.241 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'contentfilter-1.8.2'. 2025.05.17 23:29:36.242 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 23:34:21.140 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 缺少 monitoring 的数据库架构。正在尝试安装… 2025.05.17 23:34:21.255 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 数据库更新成功。 2025.05.17 23:34:22.425 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[CONVERSATION] - Unable to find a Lucene index in MMapDirectory@/opt/openfire/monitoring/search lockFactory=org.apache.lucene.store.NativeFSLockFactory@1c5950cc. rebuilding. 2025.05.17 23:34:22.471 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[CONVERSATION] - Lucene index has never been modified. Removing and rebuilding. 2025.05.17 23:34:22.490 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[MUCSEARCH] - Unable to find a Lucene index in MMapDirectory@/opt/openfire/monitoring/mucsearch lockFactory=org.apache.lucene.store.NativeFSLockFactory@1c5950cc. rebuilding. 2025.05.17 23:34:22.491 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[MUCSEARCH] - Lucene index has never been modified. Removing and rebuilding. 2025.05.17 23:34:22.501 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[MESSAGE] - Unable to find a Lucene index in MMapDirectory@/opt/openfire/monitoring/msgsearch lockFactory=org.apache.lucene.store.NativeFSLockFactory@1c5950cc. rebuilding. 2025.05.17 23:34:22.501 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[MESSAGE] - Lucene index has never been modified. Removing and rebuilding. 2025.05.17 23:34:22.570 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'monitoring-2.6.1'. 2025.05.17 23:34:22.572 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.18 09:49:00.440 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'xmppweb' was removed from the file system. 2025.05.18 09:49:00.471 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'xmppweb' 2025.05.18 09:49:00.472 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/xmppweb/lib/json-20231013.jar 2025.05.18 09:49:00.473 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/xmppweb/lib/xmppweb-0.10.3.1.jar 2025.05.18 09:49:02.612 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'xmppweb'. 2025.05.18 09:49:25.325 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'xmppweb-0.10.3 Release 1'. 2025.05.18 09:49:25.327 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.18 20:26:42.223 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'candy-0.0.0'. 2025.05.18 20:26:42.228 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.18 20:39:20.427 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'xmppweb' was removed from the file system. 2025.05.18 20:39:20.480 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'xmppweb' 2025.05.18 20:39:20.480 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/xmppweb/lib/json-20231013.jar 2025.05.18 20:39:20.481 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/xmppweb/lib/xmppweb-0.10.3.1.jar 2025.05.18 20:39:22.613 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'xmppweb'. 2025.05.18 20:39:27.493 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'candy' was removed from the file system. 2025.05.18 20:39:27.505 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'Candy' 2025.05.18 20:39:27.505 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/candy/lib/json-20231013.jar 2025.05.18 20:39:27.505 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/candy/lib/candy-2.2.0-release-5.jar 2025.05.18 20:39:29.656 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'candy'. 2025.05.18 20:41:12.712 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'websocket' was removed from the file system. 2025.05.18 20:41:12.713 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'Openfire WebSocket' 2025.05.18 20:41:12.714 WARN [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - No plugin loader found for 'websocket'. 2025.05.18 20:41:47.652 WARN [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Ignoring plugin 'websocket': compatible with server versions up to but excluding 4.2.0. Current server version is 4.9.2. 2025.05.18 20:52:43.808 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'xmppweb-0.10.3 Release 1'. 2025.05.18 20:52:43.810 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. Binary file /opt/openfire/logs/openfire.log matches [root@yfw openfire]#
10-04
[root@yfw ~]# cd /opt/openfire [root@yfw openfire]# # 一定要运行这组命令(修正路径) [root@yfw openfire]# systemctl stop openfire [root@yfw openfire]# rm -rf /opt/openfire/plugins/hello-plugin [root@yfw openfire]# mkdir -p /opt/openfire/plugins/hello-plugin/{classes,lib,web} [root@yfw openfire]# [root@yfw openfire]# cat > /opt/openfire/plugins/hello-plugin/classes/plugin.xml << 'EOF' > <?xml version="1.0" encoding="UTF-8"?> > <plugin> > <className>org.jivesoftware.openfire.plugin.RestApiPlugin</className> > <name>Hello Plugin</name> > <description>A minimal working plugin</description> > <version>1.0.0</version> > <author>Admin</author> > <minServerVersion>4.0.0</minServerVersion> > <maxServerVersion>5.0.0</maxServerVersion> > </plugin> > EOF [root@yfw openfire]# [root@yfw openfire]# # ✅ 关键:使用正确的源路径 [root@yfw openfire]# cp /root/openfire-plugin-build/restapi.jar /opt/openfire/plugins/hello-plugin/lib/ [root@yfw openfire]# [root@yfw openfire]# chown -R openfire:openfire /opt/openfire/plugins/hello-plugin [root@yfw openfire]# [root@yfw openfire]# # 验证 jar 结构 [root@yfw openfire]# jar tf /opt/openfire/plugins/hello-plugin/lib/restapi.jar | grep RestApiPlugin.class RestApiPlugin.class [root@yfw openfire]# [root@yfw openfire]# # 清理数据库残留 [root@yfw openfire]# ls -l /var/lib/openfire/embedded-db/openfire.db ls: cannot access '/var/lib/openfire/embedded-db/openfire.db': No such file or directory [root@yfw openfire]# sudo -u openfire sqlite3 /var/lib/openfire/embedded-db/openfire.db "DELETE FROM ofProperty WHERE name LIKE '%hello-plugin%';" Error: unable to open database "/var/lib/openfire/embedded-db/openfire.db": unable to open database file [root@yfw openfire]# [root@yfw openfire]# # 启动 [root@yfw openfire]# systemctl start openfire [root@yfw openfire]# sleep 30 [root@yfw openfire]# [root@yfw openfire]# # 查日志 [root@yfw openfire]# grep -i "hello-plugin\|pluginmonitor\|restapi\|loaded plugin\|found new plugin" /opt/openfire/logs/openfire.log | tail -100 2025.05.17 22:04:35.528 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 缺少 mucextinfo 的数据库架构。正在尝试安装… 2025.05.17 22:04:35.566 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 数据库更新成功。 2025.05.17 22:04:35.572 INFO [PluginMonitorExec-2]: org.igniterealtime.openfire.plugin.mucextinfo.MucExtInfoPlugin - Replacing original IQ Disco Info handlers for all MUC services with proxies. 2025.05.17 22:04:35.579 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'mucextinfo-1.0.0'. 2025.05.17 22:04:35.580 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:04:45.096 ERROR [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - An exception occurred while loading plugin 'nodejs': at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:380) [xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:368) [xmppserver-4.9.2.jar:4.9.2] 2025.05.17 22:05:18.936 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for pushnotification.users 2025.05.17 22:05:18.936 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for pushnotification.messages 2025.05.17 22:05:18.938 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 缺少 pushnotification 的数据库架构。正在尝试安装… 2025.05.17 22:05:18.983 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 数据库更新成功。 2025.05.17 22:05:18.994 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'pushnotification-1.0.1'. 2025.05.17 22:05:19.003 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:06:10.835 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'userimportexport-2.7.1'. 2025.05.17 22:06:10.838 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:06:19.088 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'usercreation-1.4.1'. 2025.05.17 22:06:19.090 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:06:43.160 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'jabberbrowsing-1.0.1'. 2025.05.17 22:06:43.163 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:07:28.588 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'nodejs' was removed from the file system. 2025.05.17 22:07:28.601 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'NodeJs' 2025.05.17 22:07:28.602 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/nodejs/lib/nodejs-0.1.1.jar 2025.05.17 22:07:30.696 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'nodejs'. 2025.05.17 22:11:14.780 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'presence-1.7.3'. 2025.05.17 22:11:14.783 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:11:40.365 INFO [PluginMonitorExec-2]: uk.ifsoft.openfire.plugins.pade.PadePlugin - start pade server localhost:7443 2025.05.17 22:11:40.367 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for URL Source Content 2025.05.17 22:11:40.378 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'PADE' SASL mechanism. 2025.05.17 22:11:40.378 INFO [PluginMonitorExec-2]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Create recordings folder 2025.05.17 22:11:40.379 INFO [PluginMonitorExec-2]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Starting Openfire Meetings 2025.05.17 22:11:40.384 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Room Properties 2025.05.17 22:11:40.393 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - No pre-existing 'jvb' user detected. Generating one. 2025.05.17 22:11:40.495 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJvbWrapper - Successfully initialized Jitsi Videobridge. 2025.05.17 22:11:40.510 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - No pre-existing 'focus' user detected. Generating one. 2025.05.17 22:11:40.566 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - Adding 'focus' user as a sysadmin to the 'conference' MUC service. 2025.05.17 22:11:40.572 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJicofoWrapper - Initializing Jitsi Focus Component (jicofo)... 2025.05.17 22:11:40.673 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJicofoWrapper - Successfully initialized Jitsi Focus Component (jicofo). 2025.05.17 22:11:40.680 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - Initialized public web socket for /colibri-ws web socket 2025.05.17 22:11:44.017 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - OfMeet Plugin - Initialize IQ handler 2025.05.17 22:11:46.516 INFO [PluginMonitorExec-2]: org.quartz.impl.StdSchedulerFactory - Using default implementation for ThreadExecutor 2025.05.17 22:11:46.518 INFO [PluginMonitorExec-2]: org.quartz.simpl.SimpleThreadPool - Job execution threads will use class loader of thread: PluginMonitorExec-2 2025.05.17 22:11:46.531 INFO [PluginMonitorExec-2]: org.quartz.core.SchedulerSignalerImpl - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl 2025.05.17 22:11:46.531 INFO [PluginMonitorExec-2]: org.quartz.core.QuartzScheduler - Quartz Scheduler v.2.3.2 created. 2025.05.17 22:11:46.532 INFO [PluginMonitorExec-2]: org.quartz.simpl.RAMJobStore - RAMJobStore initialized. 2025.05.17 22:11:46.533 INFO [PluginMonitorExec-2]: org.quartz.core.QuartzScheduler - Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED' 2025.05.17 22:11:46.533 INFO [PluginMonitorExec-2]: org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties' 2025.05.17 22:11:46.533 INFO [PluginMonitorExec-2]: org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.3.2 2025.05.17 22:11:46.533 INFO [PluginMonitorExec-2]: org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started. 2025.05.17 22:11:46.535 ERROR [PluginMonitorExec-2]: org.jivesoftware.openfire.muc.MultiUserChatManager - A database exception occurred while trying to load the ID for MUC service 'lobby' from the database. at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:380) [xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:368) [xmppserver-4.9.2.jar:4.9.2] 2025.05.17 22:11:46.535 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.muc.MultiUserChatManager - Creating MUC service 'lobby' 2025.05.17 22:11:46.535 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Rooms 2025.05.17 22:11:46.564 INFO [PluginMonitorExec-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Room Statistics 2025.05.17 22:11:46.625 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Rescheduling user idle task, recurring every PT15M 2025.05.17 22:11:46.625 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - 多用户聊天域:lobby.localhost 2025.05.17 22:11:46.637 INFO [PluginMonitorExec-2]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Creating webauthn RelyingParty 2025.05.17 22:11:46.697 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'pade-1.8.4'. 2025.05.17 22:11:46.701 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 22:30:01.079 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'clientcontrol-2.1.9'. 2025.05.17 22:30:01.081 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 23:29:36.241 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'contentfilter-1.8.2'. 2025.05.17 23:29:36.242 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.17 23:34:21.140 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 缺少 monitoring 的数据库架构。正在尝试安装… 2025.05.17 23:34:21.255 INFO [PluginMonitorExec-2]: org.jivesoftware.database.SchemaManager - 数据库更新成功。 2025.05.17 23:34:22.425 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[CONVERSATION] - Unable to find a Lucene index in MMapDirectory@/opt/openfire/monitoring/search lockFactory=org.apache.lucene.store.NativeFSLockFactory@1c5950cc. rebuilding. 2025.05.17 23:34:22.471 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[CONVERSATION] - Lucene index has never been modified. Removing and rebuilding. 2025.05.17 23:34:22.490 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[MUCSEARCH] - Unable to find a Lucene index in MMapDirectory@/opt/openfire/monitoring/mucsearch lockFactory=org.apache.lucene.store.NativeFSLockFactory@1c5950cc. rebuilding. 2025.05.17 23:34:22.491 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[MUCSEARCH] - Lucene index has never been modified. Removing and rebuilding. 2025.05.17 23:34:22.501 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[MESSAGE] - Unable to find a Lucene index in MMapDirectory@/opt/openfire/monitoring/msgsearch lockFactory=org.apache.lucene.store.NativeFSLockFactory@1c5950cc. rebuilding. 2025.05.17 23:34:22.501 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.archive.ArchiveIndexer[MESSAGE] - Lucene index has never been modified. Removing and rebuilding. 2025.05.17 23:34:22.570 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'monitoring-2.6.1'. 2025.05.17 23:34:22.572 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.18 09:49:00.440 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'xmppweb' was removed from the file system. 2025.05.18 09:49:00.471 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'xmppweb' 2025.05.18 09:49:00.472 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/xmppweb/lib/json-20231013.jar 2025.05.18 09:49:00.473 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/xmppweb/lib/xmppweb-0.10.3.1.jar 2025.05.18 09:49:02.612 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'xmppweb'. 2025.05.18 09:49:25.325 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'xmppweb-0.10.3 Release 1'. 2025.05.18 09:49:25.327 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.18 20:26:42.223 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'candy-0.0.0'. 2025.05.18 20:26:42.228 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.05.18 20:39:20.427 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'xmppweb' was removed from the file system. 2025.05.18 20:39:20.480 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'xmppweb' 2025.05.18 20:39:20.480 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/xmppweb/lib/json-20231013.jar 2025.05.18 20:39:20.481 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/xmppweb/lib/xmppweb-0.10.3.1.jar 2025.05.18 20:39:22.613 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'xmppweb'. 2025.05.18 20:39:27.493 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'candy' was removed from the file system. 2025.05.18 20:39:27.505 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'Candy' 2025.05.18 20:39:27.505 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/candy/lib/json-20231013.jar 2025.05.18 20:39:27.505 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginClassLoader - Unloading plugin JAR file /opt/openfire/bin/../plugins/candy/lib/candy-2.2.0-release-5.jar 2025.05.18 20:39:29.656 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'candy'. 2025.05.18 20:41:12.712 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'websocket' was removed from the file system. 2025.05.18 20:41:12.713 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Removing all System Properties for the plugin 'Openfire WebSocket' 2025.05.18 20:41:12.714 WARN [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - No plugin loader found for 'websocket'. 2025.05.18 20:41:47.652 WARN [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Ignoring plugin 'websocket': compatible with server versions up to but excluding 4.2.0. Current server version is 4.9.2. 2025.05.18 20:52:43.808 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'xmppweb-0.10.3 Release 1'. 2025.05.18 20:52:43.810 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. Binary file /opt/openfire/logs/openfire.log matches [root@yfw openfire]#
10-04
下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节点间最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始点到最终点的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空间树。 树 T 被构建为子集树或排列树,在探索过程中,每个节点仅被赋予一次成为扩展节点的机会,且会一次性生成其全部子节点。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节点,并将与该扩展节点相邻且可通行的方格加入至活跃节点队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节点队列中提取队首节点作为下一个扩展节点,并将与当前扩展节点相邻且未标记的方格标记为 2,随后将这些方格存入活跃节点队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节点队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值