Openfire 中SASL的认证方式之:PLAIN,DIGEST-MD5,anonymous

本文详细介绍了SASL认证机制中的PLAIN、DIGEST-MD5及anonymous三种方式的工作原理和流程,包括客户端与服务器之间的交互细节。
SASL  的认证方式包括:
    1. PLAIN: plain是最简单的机制,但同时也是最危险的机制,因为身份证书(登录名称与密码)是以base64字符串格式通过网络,没有任何加密保护措施。因此,使用plain机制时,你可能会想要结合tls。
     
     2.DIGEST-MD5:使用这种机制时,client与server共享同一个隐性密码,而且此密码不通过网络传输。验证过程是从服务器先提出challenge(质询)开始, 客户端使用此challenge与隐性密码计算出一个response(应答)。不同的challenge,不可能计算出相同的response;任何拥 有secret password的一方,都可以用相同的challenge算出相同的response。因此,服务器只要比较客户端返回的response是否与自己算 出的response相同,就可以知道客户端所拥有的密码是否正确。由于真正的密码并没有通过网络,所以不怕网络监测。
      3.   anonymous:   anonymous机制对smtp没有意义,因为smtp验证的用意在于限制转发服务的使用对象,而不是为了形成open relay,sasl之所以提供这种机制,主要是为了支持其他协议。
     

     PLAIN 方式的认证流程:
         由于是在SASL的认证方式,所以客户端必须要打开SASL认证的模式。
           config.setSecurityMode(SecurityMode. enabled );

    config.setSASLAuthenticationEnabled(  true );

  并且在客户端要声明,客户端必须支持PLAIN模式:
   
     SASLAuthentication.supportSASLMechanism( "PLAIN" );

   这样再客户端接下的来的认证过程中就会传输:
     <auth mechanism="PLAIN" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">c3lzYWRtaW4Ac3lzYWRtaW4AMTIz</auth> 数据包,接下来服务器端就会对这个数据包进贤处理。

   我的服务器端是结合中Openfire进行开发的,当数据包到达时,服务器端会进行如下处理:
    if  ( "auth"  .equals(tag)) {
                // User is trying to authenticate using SASL
                startedSASL  =  true ;
                // Process authentication stanza
                saslStatus  = SASLAuthentication.handle( session , doc);

  在服务器端接下来的处理过程中,就是通过SaslServer 来进行客户端用户名和密码的认证。SaslServer进行java.sercurity 中的类。
  

        SaslServer ss = Sasl. createSaslServer (mechanism,
                                        "xmpp" , session.getServerName(), props,
                                        new  XMPPCallbackHandler());

   这里主要使用SaslServer 创建SASL服务器端。
    制创建一个  SaslServer 。 此方法使用  JCA Security Provider Framework (在 "Java Cryptography Architecture API Specification & Reference" 中所有描述)来查找和选择  SaslServer  实现。 首先,它从 "SaslServerFactory" 服务的已注册安全提供者和指定的 SASL 机制中获得  SaslServerFactory  实例的有序列表。然后它在列表中的每个工厂实例上调用  createSaslServer() ,直到某个调用生成一个非 null 的  SaslServer  实例为止。此方法返回非 null 的  SaslServer  实例,如果搜索无法生成非 null 的 SaslServer  实例,则返回 null。

   在这里在Openfire中的:org.jivesoftware.openfire.sasl 中的SaslServerFactoryImpl 类实现了,javax.security.sasl.SaslServerFactory,这样在创建SaslServer的时候,就会调用这个具体的实现来进行创建。
     在这里在 SASLAuthentication 的初始化过程中,在initMechanisms 方法中,就初始化了 SaslServerFactory 的类的路径。
  在程序运行过程中,就会根据客户端发送的PLAIN 模式,创建SaslServer,并进行处理。
  在 SaslServerPlainImpl 类中,可以获得客户端发送过来的用户名和密码,这里都是明文进行了传输,可以获得客户端发送的数据。这样   在 XMPPCallbackHandler 中就可以获得客户端发送的用户名和密码,然后接下来就是对用户的用户名和密码进行认证。


  
DIGEST-MD5 :
    当服务器端支持   DIGEST-MD5 时,如果客户端不明确声明支持的认证方式,默认会使用  DIGEST-MD5 来进行客户端的认证。
    在认证过程中客户端发送: <auth mechanism="DIGEST-MD5" xmlns="urn:ietf:params:xml:ns:xmpp-sasl"></auth>
  服务器端,接收到消息后进行处理:
     if  ( mechanisms  .contains(mechanism)) {
                          // 被选的SASL的机制,需要服务器发送一个 challenge

                        System.  out .println(  "password------------call---back----"
                                  + mechanism);
                          try  {
                             Map<String, String> props =  new  TreeMap<String, String>();
                             props.put(Sasl.  QOP ,  "auth" );
                               if  (mechanism.equals( "GSSAPI"  )) {
                                  props.put(Sasl.  SERVER_AUTH ,  "TRUE" );
                             }
                             SaslServer ss = Sasl.createSaslServer(mechanism,
                                        "xmpp" , session.getServerName(), props,
                                        new  XMPPCallbackHandler());
                               // evaluateResponse doesn't like null parameter
                               byte [] token =  new  byte [0];
                               if  (doc.getText().length() > 0) {
                                    // If auth request includes a value then validate it
                                  token = StringUtils.decodeBase64(doc.getText()
                                           .trim());
                                    if  (token ==  null ) {
                                      token =  new  byte [0];
                                  }
                             }
                               if  (mechanism.equals( "DIGEST-MD5"  )) {
                                    // RFC2831 (DIGEST-MD5) says the client MAY provide
                                    // an initial response on subsequent
                                    // authentication. Java SASL does not (currently)
                                    // support this and thows an exception
                                    // if we try. This violates the RFC, so we just
                                    // strip any initial token.
                                  token =  new  byte [0];
                             }
                               byte [] challenge = ss.evaluateResponse(token);
                               if  (ss.isComplete()) {
                                  System.  out .println(  "ss------------------has---complete--------"  );
                                   authenticationSuccessful(session,
                                           ss.getAuthorizationID(), challenge);
                                  status = Status. authenticated ;
                             }  else  {
                                  System.  out .println(  "ss----------not--------has---complete--------"  );
                                    // Send the challenge
                                   sendChallenge(session, challenge);
                                  status = Status. needResponse ;
                             }
                             session.setSessionData(  "SaslServer" , ss);
 在这里服务器端接收客户端发送的数据信息,并且创建 SaslServer ,在创建  SaslServer server的时候,会在  java.security.Provider 中查询,服务器端设置的进行对认证方式实例化的类, ,在这里继承的 java.security.Provider 的类中,没有定义对   DIGEST-MD5 的具体实现,就采用系统默认的方式来实例化 SaslServer。接下来的过程就是服务器端向客户端发送 challenge 数据包,
      <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cmVhbG09InNtYXJ0Y29vbCIsbm9uY2U9Ind2aGNoTTFsS0dudXY0dFpOUDZxWlp3dG5WUENkTHRDUDdBNkVLcWoiLHFvcD0iYXV0aCIsY2hhcnNldD11dGYtOCxhbGdvcml0aG09bWQ1LXNlc3M=</challenge>

然后客户端发送,response 数据包进行匹配:
     <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9InN5c2FkbWluIixyZWFsbT0ic21hcnRjb29sIixjbm9uY2U9IjM3ZjJmNWUwMTQ3MWQ4ZWNkOWFmZWE1MjQyYWIyODMyMjE3MWNjOWNmNzU3MzczNTA1MGY2MjU1MjE2NTUzOTUiLG5jPTAwMDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvc21hcnRjb29sIixyZXNwb25zZT04ODBlMGU5YmYxZDYyMzI4Mjg5Nzg5MDYwNzAyNTQ5ZCxjaGFyc2V0PXV0Zi04LG5vbmNlPSJ3dmhjaE0xbEtHbnV2NHRaTlA2cVpad3RuVlBDZEx0Q1A3QTZFS3FqIg==</response>

  然后也会调用对应的 NameCallBack 和 PasswordCallBack 来验证登录用户的用户名和密码。

  当认证成功后,服务端发送:
      <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cnNwYXV0aD1iNWI4YmQ5Y2NjYjAyYjNiMDcxMDgzNzA5NDJiZDA4Yg==</success>
  这样客户端和服务器就认证成功了。

  3. anonymous 匿名登录:
       客户端在登录时,指明登录的方式, connection.loginAnonymously();
    客户端在认证时,发送数据包: <auth mechanism="ANONYMOUS" xmlns="urn:ietf:params:xml:ns:xmpp-sasl"></auth> 指明认证的方式为: ANONYMOUS。
     
      服务器端接收数据后,进行处理:
      

        在处理时:
  
         
     直接向客户端发送认证成功的数据包:
        
[root@yfw ~]# cd /www/wwwroot/szrengjing.com/kefu [root@yfw kefu]# ll total 1808 -rwxr-xr-x 1 www www 1471 Aug 7 11:51 admin.html drwxr-xr-x 2 www www 4096 Aug 7 11:46 api -rwxr-xr-x 1 www www 124 Aug 7 11:25 bosh-config.json -rwxr-xr-x 1 www www 648 Aug 7 11:47 config.js -rw-r--r-- 1 root root 525825 Jun 9 21:42 converse.min.css -rw-r--r-- 1 root root 1297669 Jun 9 21:42 converse.min.js -rwxr-xr-x 1 www www 837 Aug 7 11:54 custom.js -rwxr-xr-x 1 www www 808 Aug 7 11:50 index.html [root@yfw kefu]# 简介设置 客户端连接 服务器到服务器 外部组件 连接管理器 Web 绑定 管理更新 注册和登录 资源策略 离线消息 消息审核策略 专用数据存储 压缩设置 文件传输设置 Presence Service 推送通知 REST API 搜索服务属性 User Service Content Filter User Status Settings 注册设置 使用以下表单更改用户注册和登录的各个方面。 带内账号注册 带内账号注册允许用户使用大多数客户端自动在服务器上创建账号。它不会影响通过此 web 管理界面创建新账号的能力。管理员可能希望禁用此选项,因此要求用户通过其他方式进行注册(例如,向服务器管理员发送请求或通过您自己的自定义 web 界面)。 已启用 - 用户可以自动创建新账号。 已禁用 - 用户无法自动创建新账号。 更改密码 您可以选择是否允许用户更改密码。密码更改独立于带内账号注册。但是,您可能只想在禁用带内账号注册时禁用此功能。 已启用 - 用户可以更改密码。 已禁用 - 不允许用户更改密码。 匿名登录 您可以选择启用或禁用匿名用户登录。如果启用了它,任何人都可以连接到服务器并创建新会话。如果禁用,则只有拥有账号的用户才能连接。 已启用 - 任何人都可以登录到服务器。 已禁用 - 只有注册用户才能登录。 限制登录 使用下表定义不允许登录的 IP 地址或 IP 地址范围。例如:200.120.90.10, 200.125.80.*。将表单留空意味着客户端可以从任何 IP 地址进行连接,除非有白名单(见下文)。请注意,“阻止”列表(此处)上的条目将始终优先于下面“允许”列表上的条目。 不允许来自以下 IP 的任何登录: 使用下表定义允许登录的 IP 地址或 IP 地址范围。例如:200.120.90.10, 200.125.80.*。将表单留空意味着客户端可以从任何 IP 地址进行连接(除非有黑名单)。 限制所有(包括匿名)登录到以下 IP: 将匿名登录限制为以下 IP: 未来用户 在某些配置和/或高度特定的条件下,可以在 Openfire 知道特定用户之前为该用户调用 XMPP 功能。这方面的例子是自动配置用户的场景,同样,在非常特定的条件下,可以允许特定的配置。通常,当 Openfire 不知道某个特定用户时,它会在该用户的上下文中拒绝 XMPP 功能。通过以下配置,可以覆盖此行为:当启用“未来用户”时,Openfire 将不会拒绝其无法识别的用户的某些 XMPP 功能。相反,它假定用户将很快得到配置。例如,这可用于在配置用户之前记录发送给用户的离线消息。 已启用 - 允许与 Openfire 尚未识别的用户相关的 XMPP 功能。 已禁用 - 拒绝与 Openfire 当前未识别的用户相关的 XMPP 功能。 SASL 机制 下面配置的 SASL 机制控制用于身份验证的机制。每种机制都有其自身的特点。下表用于控制在 Openfire 中启用哪些 SASL 机制。要使用的机制必须有一个实施,但即使有,该机制也可能不会提供给客户端:这可能取决于特定于机制的服务器设置。 已启用 名称 描述 实施可用 提供给客户端 ANONYMOUS 用于未经身份验证的访客访问。 CRAM-MD5 基于 HMAC-MD5 的简单质询&mdash;响应方案。 DIGEST-MD5 基于 MD5 的质询&mdash;响应方案。DIGEST-MD5 提供了一个数据安全层。 EXTERNAL 其中身份验证在上下文中是隐式的(例如,对于已经使用 IPsec 或 TLS 的协议)。 GSSAPI 通过 GSSAPI 进行 Kerberos V5 身份验证。GSSAPI 提供了一个数据安全层。 JIVE-SHAREDSECRET 基于共享秘密的专有 Jive 软件 SASL 机制。 NTLM NT LAN Manager 身份验证机制。 PADE (没有可用的描述) PLAIN 简单的明文密码机制。 SCRAM-SHA-1 基于 SHA-1 的加盐质询&mdash;响应方案。 如何配置连接 聊天服务器IP地址: 124.71.230.244 聊天服务器端口号: 9090 HTTP-BIND端口号: 7070 聊天服务器管理员登录账户: admin 聊天服务器管理员登录密码: 留空则不更新 确认密码: 访问聊天服务系统
08-08
[root@yfw ~]# cd /opt/openfire [root@yfw openfire]# ls -R /opt/openfire/plugins/restapi-plugin/ /opt/openfire/plugins/restapi-plugin/: com META-INF plugin.xml /opt/openfire/plugins/restapi-plugin/com: example /opt/openfire/plugins/restapi-plugin/com/example: restapi /opt/openfire/plugins/restapi-plugin/com/example/restapi: RestApiPlugin.class /opt/openfire/plugins/restapi-plugin/META-INF: maven /opt/openfire/plugins/restapi-plugin/META-INF/maven: com.example.openfire.plugins /opt/openfire/plugins/restapi-plugin/META-INF/maven/com.example.openfire.plugins: restapi-plugin /opt/openfire/plugins/restapi-plugin/META-INF/maven/com.example.openfire.plugins/restapi-plugin: pom.properties pom.xml [root@yfw openfire]# cat /opt/openfire/plugins/restapi-plugin/plugin.xml <?xml version="1.0" encoding="UTF-8"?> <plugin> <className>com.example.restapi.RestApiPlugin</className> <name>REST API Plugin</name> <description>A simple plugin to expose REST APIs.</description> <version>1.0.0</version> <author>Your Name</author> </plugin> [root@yfw openfire]# cd /opt/openfire/plugins/restapi-plugin [root@yfw restapi-plugin]# [root@yfw restapi-plugin]# # 创建 classes 目录(如果不存在) [root@yfw restapi-plugin]# mkdir -p classes [root@yfw restapi-plugin]# [root@yfw restapi-plugin]# # 将所有 .class 文件和 META-INF 移入 classes/ [root@yfw restapi-plugin]# mv com classes/ [root@yfw restapi-plugin]# mv META-INF classes/ 2>/dev/null || echo "META-INF already moved or not present" [root@yfw restapi-plugin]# chown -R openfire:openfire /opt/openfire/plugins/restapi-plugin [root@yfw restapi-plugin]# chmod -R 755 /opt/openfire/plugins/restapi-plugin [root@yfw restapi-plugin]# systemctl restart openfire [root@yfw restapi-plugin]# tail -f /opt/openfire/logs/openfire.log 2025.10.03 02:59:07.367 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for LDAP UserDN 2025.10.03 02:59:07.775 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'ANONYMOUS' SASL mechanism. 2025.10.03 02:59:07.775 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'CRAM-MD5' SASL mechanism. 2025.10.03 02:59:07.775 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'DIGEST-MD5' SASL mechanism. 2025.10.03 02:59:07.775 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'EXTERNAL' SASL mechanism. 2025.10.03 02:59:07.775 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'GSSAPI' SASL mechanism. 2025.10.03 02:59:07.775 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'JIVE-SHAREDSECRET' SASL mechanism. 2025.10.03 02:59:07.776 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'PLAIN' SASL mechanism. 2025.10.03 02:59:07.776 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'SCRAM-SHA-1' SASL mechanism. 2025.10.03 02:59:07.856 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Remote Server Configurations 2025.10.03 02:59:27.125 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'userservice.bak' was removed from the file system. 2025.10.03 02:59:27.125 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: java.lang.NullPointerException: null at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?]
10-04
[root@yfw ~]# cd /opt/openfire [root@yfw openfire]# [root@yfw ~]# cd /opt/openfire -bash: [root@yfw: command not found [root@yfw openfire]# [root@yfw openfire]# cd ~/openfire-plugin-build eaning - Stop old timer if started 2025.10.03 04-bash: [root@yfw: command not found [root@yfw openfire]# [root@yfw openfire-plugin-build]# rm -rf src/RestApiPlugin.java :31:49.980 INFO [Thread-2]: org.jivesoftware.openfire.XMPPServe-bash: [root@yfw: command not found [root@yfw openfire]# [root@yfw openfire-plugin-build]# mkdir -p src r - Openfire stopped 2025.10.03 04:31:51.473 IN-bash: [root@yfw: command not found [root@yfw openfire]# [root@yfw openfire-plugin-build]# cat > src/RestApiPlugin.java << 'EOF' > > public class RestApiPlugin implements org.jivesoftware.openfire.container.Plugin { > > > > static { > > System.out.println("[PLUGIN-DEBUG] 💡 静态块执行:RestApiPlugin 类已被 JVM 加载!"); Plugin.class"));em.out.println("[PLUGIN-DEBUG] 📦 类资源位置: " + RestApiPlugin.class.getResource("RestApiP > > } > > > > public RestApiPlugin() { > > System.out.println("[PLUGIN-DEBUG] 🆕 构造函数执行:RestApiPlugin 实例已创建"); > > } > > > > @Override > > public void initializePlugin(org.jivesoftware.openfire.container.PluginManager manager, java.io.File pluginDirectory) { ePath()); System.out.println("[PLUGIN-DEBUG] 🎉 插件初始化成功!插件目录: " + pluginDirectory.getAbsolute > > } > > > > @Override > > public void destroyPlugin() { org.ji> > System.out.println("[PLUGIN-DEBUG] 🔌 插件已销毁"); > > } > > } > > EOF > [root@yfw openfire-plugin-build]# # 编译 > [root@yfw openfire-plugin-build]# /usr/lib/jvm/java-11-openjdk/bin/javac \ > > -source 11 -target 11 \ > > -cp "/opt/openfire/lib/xmppserver-4.9.2.jar" \ > > -d classes \ > > src/RestApiPlugin.java > [root@yfw openfire-plugin-build]# > [root@yfw openfire-plugin-build]# # 打包 > [root@yfw openfire-plugin-build]# jar cf restapi.jar -C classes . > [root@yfw openfire-plugin-build]# > [root@yfw openfire-plugin-build]# # 清除旧插件和缓存 > [root@yfw openfire-plugin-build]# rm -rf /opt/openfire/plugins/restapi > [root@yfw openfire-plugin-build]# rm -rf /opt/openfire/work/plugins/restapi* > [root@yfw openfire-plugin-build]# > [root@yfw openfire-plugin-build]# # 部署 > [root@yfw openfire-plugin-build]# mkdir -p /opt/openfire/plugins/restapi > [root@yfw openfire-plugin-build]# cp restapi.jar /opt/openfire/plugins/restapi/ > [root@yfw openfire-plugin-build]# > [root@yfw openfire-plugin-build]# # 写入 plugin.xml(确保没问题) > [root@yfw openfire-plugin-build]# cat > /opt/openfire/plugins/restapi/plugin.xml << 'EOF' > > <?xml version="1.0" encoding="UTF-8"?> > > <plugin> > > <className>RestApiPlugin</className> > > <name>REST API Plugin</name> > > <description>Simple REST API Plugin with Debug Logs</description> > > <author>Admin</author> > > <version>1.0.0</version> > > <date>2025-10-03</date> > > <minServerVersion>4.0.0</minServerVersion> > > </plugin> > > EOF > [root@yfw openfire-plugin-build]# > [root@yfw openfire-plugin-build]# # 权限 > [root@yfw openfire-plugin-build]# chown -R openfire:openfire /opt/openfire/plugins/restapi > [root@yfw openfire-plugin-build]# chmod -R 755 /opt/openfire/plugins/restapi > [root@yfw openfire-plugin-build]# > [root@yfw openfire-plugin-build]# # 重启 > [root@yfw openfire-plugin-build]# systemctl restart openfire > [root@yfw openfire-plugin-build]# > [root@yfw openfire-plugin-build]# # 查看日志 > [root@yfw openfire-plugin-build]# tail -f /opt/openfire/logs/openfire.log > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] > at java.lang.Thread.run(Thread.java:829) [?:?] > 2025.10.03 04:31:49.782 INFO [Thread-2]: org.jivesoftware.openfire.XMPPServer - Shutting down plugins ... > 2025.10.03 04:31:49.782 INFO [Thread-2]: org.jivesoftware.openfire.container.PluginManager - Shutting down. Unloading all loaded plugins... tLocalCacheStrategy] for Components Sessions 2025.10.03 04:31:52.353 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Connection Managers Sessions 20> 2025.10.03 04:31:49.789 INFO [Thread-2]: org.jivesoftware.openfire.XMPPServer - Shutting down 54 modus ... > 2025.10.03 04:31:49.962 INFO [shutdown-thread-0]: org.jivesoftware.openfire.pubsub.DefaultPubSubPersistenceProvider - Flushing write cache to database > 2025.10.03 04:31:49.966 INFO [shutdown-thread-0]: org.jivesoftware.openfire.OfflineMessageStore - Offline message cleaning - Stop old timer if started > 2025.10.03 04:31:49.980 INFO [Thread-2]: org.jivesoftware.openfire.XMPPServer - Openfire stopped > 2025.10.03 04:31:51.473 INFO [main]: org.jivesoftware.openfire.XMPPServer - Registering shutdown hook (standalone mode) > 2025.10.03 04:31:52.088 INFO [main]: org.jivesoftware.util.cache.ConsistencyMonitor - Applying configuration for cache consistency check. Enabled: false > 2025.10.03 04:31:52.110 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Servers Cache > 2025.10.03 04:31:52.112 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Components Cache > 2025.10.03 04:31:52.113 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Users Cache > 2025.10.03 04:31:52.113 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing AnonymousUsers Cache > 2025.10.03 04:31:52.114 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing User Sessions > 2025.10.03 04:31:52.118 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Roster > 2025.10.03 04:31:52.121 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for RosterItems .03 04:31:52.381 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocal> 2025.10.03 04:31:52.139 INFO [main]: org.jivesoftware.util.cache.CacheFactory - software.util.cache.DefaultLocalCacheStrategy] for Routing Result Listeners > 2025.10.03 04:31:52.142 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Multicast Service > 2025.10.03 04:31:52.147 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Offline Message Size > 2025.10.03 04:31:52.150 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for VCard > 2025.10.03 04:31:52.254 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Privacy Lists > 2025.10.03 04:31:52.258 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for File Transfer Cache > 2025.10.03 04:31:52.334 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Offline Presence Cache > 2025.10.03 04:31:52.335 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Last Activity Cache > 2025.10.03 04:31:52.339 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for User > 2025.10.03 04:31:52.339 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Remote Users Existence > 2025.10.03 04:31:52.352 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Components Sessions > 2025.10.03 04:31:52.353 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Connection Managers Sessions > 2025.10.03 04:31:52.353 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Incoming Server Session Info Cache 0.03 04:31:52.723 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.Default> 2025.10.03 04:31:52.353 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Creasoftware.util.cache.DefaultLocalCacheStrategy] for Sessions by Hostname > 2025.10.03 04:31:52.353 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Client Session Info Cache > 2025.10.03 04:31:52.355 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Directed Presences > 2025.10.03 04:31:52.356 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for PEPServiceManager > 2025.10.03 04:31:52.358 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for File Transfer > 2025.10.03 04:31:52.361 INFO [main]: org.jivesoftware.openfire.pubsub.PubSubPersistenceProviderManager - Loading PubSub persistence provider: class org.jivesoftware.openfire.pubsub.CachingPubsubPersistenceProvider. > 2025.10.03 04:31:52.363 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Published Items > 2025.10.03 04:31:52.364 INFO [main]: org.jivesoftware.openfire.pubsub.CachingPubsubPersistenceProvider - Loading PubSub persistence provider to delegate to: class org.jivesoftware.openfire.pubsub.DefaultPubSubPersistenceProvider. > 2025.10.03 04:31:52.368 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Default Node Configurations > 2025.10.03 04:31:52.381 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Disco Server Features > 2025.10.03 04:31:52.386 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Disco Server Items > 2025.10.03 04:31:52.386 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Components > 2025.10.03 04:31:52.612 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Entity Capabilities LDAP UserDN 2025.10.03 04:31:53.526 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'ANONYMOUS' SASL mechanism. 2> 2025.10.03 04:31:52.612 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cace [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Entity Capabilities Users > 2025.10.03 04:31:52.662 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group (Shared) Metadata Cache > 2025.10.03 04:31:52.666 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group > 2025.10.03 04:31:52.667 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group Metadata Cache > 2025.10.03 04:31:52.700 INFO [main]: org.jivesoftware.openfire.pubsub.PubSubModule - 发布–订阅域:pubsub.localhost > 2025.10.03 04:31:52.711 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service Pings Sent > 2025.10.03 04:31:52.713 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC History > 2025.10.03 04:31:52.717 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'conference' Rooms > 2025.10.03 04:31:52.717 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'conference' Room Statistics > 2025.10.03 04:31:52.723 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Rooms > 2025.10.03 04:31:52.723 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Room Statistics > 2025.10.03 04:31:52.733 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Rescheduling user idle task, recurring every PT15M > 2025.10.03 04:31:52.738 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - 多用 户聊天域:conference.localhost > 2025.10.03 04:31:52.757 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Rescheduling user idle task, recurring every PT15M > 2025.10.03 04:31:52.759 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - 多用 户聊天域:lobby.localhost > 2025.10.03 04:31:52.792 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. > 2025.10.03 04:31:52.797 INFO [main]: org.jivesoftware.openfire.XMPPServer - Openfire 4.9.2 [2025年10月3日 上午4:31:52] > 2025.10.03 04:31:52.794 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: > java.lang.NullPointerException: null > at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] > at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] > at java.lang.Thread.run(Thread.java:829) [?:?] > 2025.10.03 04:31:52.998 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for LDAP UserDN > 2025.10.03 04:31:53.526 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'ANONYMOUS' SASL mechanism. > 2025.10.03 04:31:53.526 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'CRAM-MD5' SASL mechanism. > 2025.10.03 04:31:53.526 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'DIGEST-MD5' SASL mechanism. > 2025.10.03 04:31:53.526 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'EXTERNAL' SASL mechanism. > 2025.10.03 04:31:53.527 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'GSSAPI' SASL mechanism. > 2025.10.03 04:31:53.527 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'JIVE-SHAREDSECRET' SASL mechanism. > 2025.10.03 04:31:53.527 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'PLAIN' SASL mechanism. > 2025.10.03 04:31:53.527 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'SCRAM-SHA-1' SASL mechanism. > 2025.10.03 04:31:53.568 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Remote Server Configurations > 2025.10.03 04:32:12.807 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. > 2025.10.03 04:32:12.808 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: > java.lang.NullPointerException: null > at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] > at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] > at java.lang.Thread.run(Thread.java:829) [?:?] > 2025.10.03 04:32:32.810 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. > 2025.10.03 04:32:32.810 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: > java.lang.NullPointerException: null > at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] > at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] > at java.lang.Thread.run(Thread.java:829) [?:?] > 2025.10.03 04:32:52.811 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. > 2025.10.03 04:32:52.811 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: > java.lang.NullPointerException: null > at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] > at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] onitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] at java.util.concurrent.Exec> at java.lang.Thread.run(Thread.java:829) [?:?] > 2025.10.03 04:33:12.813 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. > 2025.10.03 04:33:12.813 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: > java.lang.NullPointerException: null > at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] > at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] > at java.lang.Thread.run(Thread.java:829) [?:?] > 2025.10.03 04:33:32.814 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. > 2025.10.03 04:33:32.814 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: > java.lang.NullPointerException: null > at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] > at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] > at java.lang.Thread.run(Thread.java:829) [?:?] > 2025.10.03 04:33:52.816 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. > 2025.10.03 04:33:52.816 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: > java.lang.NullPointerException: null > at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] > at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] > at java.lang.Thread.run(Thread.java:829) [?:?] > 2025.10.03 04:34:12.817 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. > 2025.10.03 04:34:12.817 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: > java.lang.NullPointerException: null > at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] > at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] > at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] > at java.lang.Thread.run(Thread.java:829) [?:?] > > [root@yfw ~]# cd /opt/openfire [root@yfw openfire]# cd ~/openfire-plugin-build [root@yfw openfire-plugin-build]# rm -f src/RestApiPlugin.java [root@yfw openfire-plugin-build]# [root@yfw openfire-plugin-build]# echo -e 'public class RestApiPlugin implements org.jivesoftware.openfire.container.Plugin {\n' \ > ' static {\n' \ > ' System.out.println("[PLUGIN-DEBUG] 💡 静态块执行:RestApiPlugin 类已被 JVM 加载!");\n' \ tApiPlugin.class"));\n' \t.println("[PLUGIN-DEBUG] 📦 类资源位置: " + RestApiPlugin.class.getResource("Rest > ' }\n' \ > '\n' \ > ' public RestApiPlugin() {\n' \ > ' System.out.println("[PLUGIN-DEBUG] 🆕 构造函数执行:RestApiPlugin 实例已创建");\n' \ > ' }\n' \ > '\n' \ > ' @Override\n' \ > ' public void initializePlugin(org.jivesoftware.openfire.container.PluginManager manager, java.io.File pluginDirectory) {\n' \ olutePath());\n' \stem.out.println("[PLUGIN-DEBUG] 🎉 插件初始化成功!插件目录: " + pluginDirectory.getAbso > ' }\n' \ > '\n' \ > ' @Override\n' \ > ' public void destroyPlugin() {\n' \ > ' System.out.println("[PLUGIN-DEBUG] 🔌 插件已销毁");\n' \ > ' }\n' \ > '}' > src/RestApiPlugin.java [root@yfw openfire-plugin-build]# cat src/RestApiPlugin.java public class RestApiPlugin implements org.jivesoftware.openfire.container.Plugin { static { System.out.println("[PLUGIN-DEBUG] 💡 静态块执行:RestApiPlugin 类已被 JVM 加载!"); System.out.println("[PLUGIN-DEBUG] 📦 类资源位置: " + RestApiPlugin.class.getResource("RestApiPlugin.class")); } public RestApiPlugin() { System.out.println("[PLUGIN-DEBUG] 🆕 构造函数执行:RestApiPlugin 实例已创建"); } @Override public void initializePlugin(org.jivesoftware.openfire.container.PluginManager manager, java.io.File pluginDirectory) { System.out.println("[PLUGIN-DEBUG] 🎉 插件初始化成功!插件目录: " + pluginDirectory.getAbsolutePath()); } @Override public void destroyPlugin() { System.out.println("[PLUGIN-DEBUG] 🔌 插件已销毁"); } } [root@yfw openfire-plugin-build]# # 编译 [root@yfw openfire-plugin-build]# /usr/lib/jvm/java-11-openjdk/bin/javac \ > -source 11 -target 11 \ > -cp "/opt/openfire/lib/xmppserver-4.9.2.jar" \ > -d classes \ > src/RestApiPlugin.java [root@yfw openfire-plugin-build]# [root@yfw openfire-plugin-build]# # 打包 [root@yfw openfire-plugin-build]# jar cf restapi.jar -C classes . [root@yfw openfire-plugin-build]# [root@yfw openfire-plugin-build]# # 清除旧插件和缓存 [root@yfw openfire-plugin-build]# rm -rf /opt/openfire/plugins/restapi [root@yfw openfire-plugin-build]# rm -rf /opt/openfire/work/plugins/restapi* [root@yfw openfire-plugin-build]# [root@yfw openfire-plugin-build]# # 部署 [root@yfw openfire-plugin-build]# mkdir -p /opt/openfire/plugins/restapi [root@yfw openfire-plugin-build]# cp restapi.jar /opt/openfire/plugins/restapi/ [root@yfw openfire-plugin-build]# [root@yfw openfire-plugin-build]# # 确保 plugin.xml 存在且正确 [root@yfw openfire-plugin-build]# cat > /opt/openfire/plugins/restapi/plugin.xml << 'EOF' > <?xml version="1.0" encoding="UTF-8"?> > <plugin> > <className>RestApiPlugin</className> > <name>REST API Plugin</name> > <description>Simple REST API Plugin with Debug Logs</description> > <author>Admin</author> > <version>1.0.0</version> > <date>2025-10-03</date> > <minServerVersion>4.0.0</minServerVersion> > </plugin> > EOF [root@yfw openfire-plugin-build]# [root@yfw openfire-plugin-build]# # 重启 Openfire [root@yfw openfire-plugin-build]# systemctl restart openfire [root@yfw openfire-plugin-build]# [root@yfw openfire-plugin-build]# # 查看日志 [root@yfw openfire-plugin-build]# tail -f /opt/openfire/logs/openfire.log at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?] 2025.10.03 04:49:02.536 INFO [Thread-2]: org.jivesoftware.openfire.XMPPServer - Shutting down plugins ... 2025.10.03 04:49:02.536 INFO [Thread-2]: org.jivesoftware.openfire.container.PluginManager - Shutting down. Unloading all loaded plugins... 2025.10.03 04:49:02.541 INFO [Thread-2]: org.jivesoftware.openfire.XMPPServer - Shutting down 54 modules ... 2025.10.03 04:49:02.982 INFO [shutdown-thread-0]: org.jivesoftware.openfire.pubsub.DefaultPubSubPersistenceProvider - Flushing write cache to database 2025.10.03 04:49:03.022 INFO [shutdown-thread-0]: org.jivesoftware.openfire.OfflineMessageStore - Offline message cleaning - Stop old timer if started 2025.10.03 04:49:03.032 INFO [Thread-2]: org.jivesoftware.openfire.XMPPServer - Openfire stopped 2025.10.03 04:49:04.608 INFO [main]: org.jivesoftware.openfire.XMPPServer - Registering shutdown hook (standalone mode) 2025.10.03 04:49:05.196 INFO [main]: org.jivesoftware.util.cache.ConsistencyMonitor - Applying configuration for cache consistency check. Enabled: false 2025.10.03 04:49:05.213 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Servers Cache 2025.10.03 04:49:05.214 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Components Cache 2025.10.03 04:49:05.215 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Users Cache 2025.10.03 04:49:05.215 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing AnonymousUsers Cache 2025.10.03 04:49:05.215 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing User Sessions 2025.10.03 04:49:05.220 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Roster 2025.10.03 04:49:05.222 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for RosterItems 2025.10.03 04:49:05.239 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Result Listeners 2025.10.03 04:49:05.242 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Multicast Service 2025.10.03 04:49:05.245 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Offline Message Size 2025.10.03 04:49:05.248 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for VCard 2025.10.03 04:49:05.353 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Privacy Lists 2025.10.03 04:49:05.354 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for File Transfer Cache 2025.10.03 04:49:05.431 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Offline Presence Cache 2025.10.03 04:49:05.431 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Last Activity Cache 2025.10.03 04:49:05.435 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for User 2025.10.03 04:49:05.435 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Remote Users Existence 2025.10.03 04:49:05.453 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Components Sessions 2025.10.03 04:49:05.453 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Connection Managers Sessions 2025.10.03 04:49:05.453 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Incoming Server Session Info Cache 2025.10.03 04:49:05.453 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Sessions by Hostname 2025.10.03 04:49:05.453 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Client Session Info Cache 2025.10.03 04:49:05.454 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Directed Presences 2025.10.03 04:49:05.459 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for PEPServiceManager 2025.10.03 04:49:05.462 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for File Transfer 2025.10.03 04:49:05.465 INFO [main]: org.jivesoftware.openfire.pubsub.PubSubPersistenceProviderManager - Loading PubSub persistence provider: class org.jivesoftware.openfire.pubsub.CachingPubsubPersistenceProvider. 2025.10.03 04:49:05.469 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Published Items 2025.10.03 04:49:05.469 INFO [main]: org.jivesoftware.openfire.pubsub.CachingPubsubPersistenceProvider - Loading PubSub persistence provider to delegate to: class org.jivesoftware.openfire.pubsub.DefaultPubSubPersistenceProvider. 2025.10.03 04:49:05.474 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Default Node Configurations 2025.10.03 04:49:05.488 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Disco Server Features 2025.10.03 04:49:05.494 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Disco Server Items 2025.10.03 04:49:05.494 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Components 2025.10.03 04:49:05.701 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Entity Capabilities 2025.10.03 04:49:05.702 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Entity Capabilities Users 2025.10.03 04:49:05.750 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group (Shared) Metadata Cache 2025.10.03 04:49:05.750 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group 2025.10.03 04:49:05.751 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group Metadata Cache 2025.10.03 04:49:05.770 INFO [main]: org.jivesoftware.openfire.pubsub.PubSubModule - 发布–订阅域:pubsub.localhost 2025.10.03 04:49:05.778 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service Pings Sent 2025.10.03 04:49:05.780 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC History 2025.10.03 04:49:05.782 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'conference' Rooms 2025.10.03 04:49:05.782 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'conference' Room Statistics 2025.10.03 04:49:05.785 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Rooms 2025.10.03 04:49:05.785 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Room Statistics 2025.10.03 04:49:05.793 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Rescheduling user idle task, recurring every PT15M 2025.10.03 04:49:05.797 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - 多用户聊天域:conference.localhost 2025.10.03 04:49:05.818 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Rescheduling user idle task, recurring every PT15M 2025.10.03 04:49:05.819 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - 多用户聊天域:lobby.localhost 2025.10.03 04:49:05.841 INFO [main]: org.jivesoftware.openfire.XMPPServer - Openfire 4.9.2 [2025年10月3日 上午4:49:05] 2025.10.03 04:49:05.867 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. 2025.10.03 04:49:05.868 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: java.lang.NullPointerException: null at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?] 2025.10.03 04:49:06.097 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for LDAP UserDN 2025.10.03 04:49:06.588 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'ANONYMOUS' SASL mechanism. 2025.10.03 04:49:06.588 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'CRAM-MD5' SASL mechanism. 2025.10.03 04:49:06.588 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'DIGEST-MD5' SASL mechanism. 2025.10.03 04:49:06.588 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'EXTERNAL' SASL mechanism. 2025.10.03 04:49:06.588 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'GSSAPI' SASL mechanism. 2025.10.03 04:49:06.588 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'JIVE-SHAREDSECRET' SASL mechanism. 2025.10.03 04:49:06.588 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'PLAIN' SASL mechanism. 2025.10.03 04:49:06.588 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'SCRAM-SHA-1' SASL mechanism. 2025.10.03 04:49:06.630 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Remote Server Configurations 2025.10.03 04:49:25.887 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Plugin 'restapi' was removed from the file system. 2025.10.03 04:49:25.888 ERROR [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - An unexpected exception occurred: java.lang.NullPointerException: null at org.jivesoftware.openfire.container.PluginManager.unloadPlugin(PluginManager.java:883) ~[xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.run(PluginMonitor.java:305) [xmppserver-4.9.2.jar:4.9.2] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?]
10-04
[root@yfw ~]# cd /opt/openfire [root@yfw openfire]# # 删除名为 restapi-openfire-plugin-assembly 的残留目录 [root@yfw openfire]# rm -rf restapi-openfire-plugin-assembly [root@yfw openfire]# [root@yfw openfire]# # 再次确认是否还有任何 restapi 相关内容 [root@yfw openfire]# ls -la | grep -i restapi -rw-r--r-- 1 root root 15366925 Oct 2 19:06 restAPI.jar [root@yfw openfire]# # 删除根目录下的 restAPI.jar(不是在 plugins/ 下) [root@yfw openfire]# rm -f /opt/openfire/restAPI.jar [root@yfw openfire]# [root@yfw openfire]# # 再次确认是否还有任何 restapi 相关内容 [root@yfw openfire]# ls -la /opt/openfire | grep -i restapi [root@yfw openfire]# # 进入 plugins 目录 [root@yfw openfire]# cd /opt/openfire/plugins [root@yfw plugins]# [root@yfw plugins]# # 查看是否有残留 [root@yfw plugins]# ls -la | grep -i restapi -rw-r--r-- 1 root root 13769741 Oct 3 01:25 restAPI-openfire-plugin-assembly.jar [root@yfw plugins]# # 删除错误命名的 JAR 文件 [root@yfw plugins]# rm -f /opt/openfire/plugins/restAPI-openfire-plugin-assembly.jar [root@yfw plugins]# [root@yfw plugins]# # 再次检查是否还有任何 restapi 相关内容(不区分大小写) [root@yfw plugins]# ls -la /opt/openfire/plugins | grep -i restapi [root@yfw plugins]# # 回到你的项目目录 [root@yfw plugins]# cd ~/openfire-plugins/restapi-plugin [root@yfw restapi-plugin]# [root@yfw restapi-plugin]# # 清理旧构建 + 重新打包 [root@yfw restapi-plugin]# mvn clean package [INFO] Scanning for projects... [INFO] [INFO] ------------< com.example.openfire.plugins:restapi-plugin >------------- [INFO] Building REST API Plugin 1.0.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ restapi-plugin --- [INFO] Deleting /root/openfire-plugins/restapi-plugin/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ restapi-plugin --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:3.11.0:compile (default-compile) @ restapi-plugin --- [INFO] Changes detected - recompiling the module! :source [INFO] Compiling 1 source file with javac [debug target 11] to target/classes [WARNING] system modules path not set in conjunction with -source 11 [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ restapi-plugin --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /root/openfire-plugins/restapi-plugin/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.11.0:testCompile (default-testCompile) @ restapi-plugin --- [INFO] No sources to compile [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ restapi-plugin --- [INFO] No tests to run. [INFO] [INFO] --- maven-jar-plugin:3.3.0:jar (default-jar) @ restapi-plugin --- [INFO] Building jar: /root/openfire-plugins/restapi-plugin/target/restapi-plugin-assembly.jar [INFO] [INFO] --- maven-assembly-plugin:3.6.0:single (default) @ restapi-plugin --- [WARNING] Artifact: com.example.openfire.plugins:restapi-plugin:jar:1.0.0-SNAPSHOT references the same file as the assembly destination file. Moving it to a temporary location for inclusion. [INFO] Building jar: /root/openfire-plugins/restapi-plugin/target/restapi-plugin-assembly.jar [WARNING] Configuration option 'appendAssemblyId' is set to false. Instead of attaching the assembly file: /root/openfire-plugins/restapi-plugin/target/restapi-plugin-assembly.jar, it will become the file for main project artifact. NOTE: If multiple descriptors or descriptor-formats are provided for this project, the value of this file will be non-deterministic! [WARNING] Replacing pre-existing project main-artifact file: /root/openfire-plugins/restapi-plugin/target/archive-tmp/restapi-plugin-assembly.jar with assembly file: /root/openfire-plugins/restapi-plugin/target/restapi-plugin-assembly.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.841 s [INFO] Finished at: 2025-10-03T02:27:13+08:00 [INFO] ------------------------------------------------------------------------ [root@yfw restapi-plugin]# [root@yfw restapi-plugin]# # 将生成的 JAR 复制到 Openfire 插件目录,命名为标准名称 [root@yfw restapi-plugin]# cp target/restapi-plugin-assembly.jar /opt/openfire/plugins/restapi-plugin.jar [root@yfw restapi-plugin]# # 启动服务 [root@yfw restapi-plugin]# systemctl start openfire [root@yfw restapi-plugin]# [root@yfw restapi-plugin]# # 实时查看日志 [root@yfw restapi-plugin]# tail -f /opt/openfire/logs/openfire.log 2025.10.03 02:22:51.138 INFO [shutdown-thread-0]: org.jivesoftware.openfire.spi.ConnectionListener[component-directTLS] - Stopped. 2025.10.03 02:22:51.138 INFO [shutdown-thread-0]: org.jivesoftware.openfire.spi.NettyConnectionAcceptor[connection_manager] - Closing channel [id: 0x6f26cf11, L:/0:0:0:0:0:0:0:0:5262] 2025.10.03 02:22:51.154 INFO [shutdown-thread-0]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager] - Stopped. 2025.10.03 02:22:51.154 INFO [shutdown-thread-0]: org.jivesoftware.openfire.spi.NettyConnectionAcceptor[connection_manager_ssl] - Closing channel [id: 0xcdd66d4e, L:/0:0:0:0:0:0:0:0:5263] 2025.10.03 02:22:51.165 INFO [shutdown-thread-0]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager-directTLS] - Stopped. 2025.10.03 02:22:51.167 INFO [shutdown-thread-0]: org.jivesoftware.openfire.http.HttpSessionManager - Stopping instance 2025.10.03 02:22:51.180 INFO [shutdown-thread-0]: org.jivesoftware.openfire.http.HttpBindManager - HTTP bind service stopped 2025.10.03 02:22:51.198 INFO [shutdown-thread-0]: org.jivesoftware.openfire.pubsub.DefaultPubSubPersistenceProvider - Flushing write cache to database 2025.10.03 02:22:51.200 INFO [shutdown-thread-0]: org.jivesoftware.openfire.OfflineMessageStore - Offline message cleaning - Stop old timer if started 2025.10.03 02:22:51.211 INFO [Thread-2]: org.jivesoftware.openfire.XMPPServer - Openfire stopped 2025.10.03 02:27:47.786 INFO [main]: org.jivesoftware.openfire.XMPPServer - Registering shutdown hook (standalone mode) 2025.10.03 02:27:48.444 INFO [main]: org.jivesoftware.util.cache.ConsistencyMonitor - Applying configuration for cache consistency check. Enabled: false 2025.10.03 02:27:48.482 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Servers Cache 2025.10.03 02:27:48.484 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Components Cache 2025.10.03 02:27:48.485 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Users Cache 2025.10.03 02:27:48.485 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing AnonymousUsers Cache 2025.10.03 02:27:48.485 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing User Sessions 2025.10.03 02:27:48.493 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Roster 2025.10.03 02:27:48.495 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for RosterItems 2025.10.03 02:27:48.521 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Routing Result Listeners 2025.10.03 02:27:48.525 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Multicast Service 2025.10.03 02:27:48.530 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Offline Message Size 2025.10.03 02:27:48.533 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for VCard 2025.10.03 02:27:48.641 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Privacy Lists 2025.10.03 02:27:48.642 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for File Transfer Cache 2025.10.03 02:27:48.780 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Offline Presence Cache 2025.10.03 02:27:48.780 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Last Activity Cache 2025.10.03 02:27:48.785 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for User 2025.10.03 02:27:48.785 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Remote Users Existence 2025.10.03 02:27:48.805 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Components Sessions 2025.10.03 02:27:48.806 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Connection Managers Sessions 2025.10.03 02:27:48.806 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Incoming Server Session Info Cache 2025.10.03 02:27:48.806 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Sessions by Hostname 2025.10.03 02:27:48.806 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Client Session Info Cache 2025.10.03 02:27:48.808 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Directed Presences 2025.10.03 02:27:48.810 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for PEPServiceManager 2025.10.03 02:27:48.812 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for File Transfer 2025.10.03 02:27:48.815 INFO [main]: org.jivesoftware.openfire.pubsub.PubSubPersistenceProviderManager - Loading PubSub persistence provider: class org.jivesoftware.openfire.pubsub.CachingPubsubPersistenceProvider. 2025.10.03 02:27:48.817 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Published Items 2025.10.03 02:27:48.818 INFO [main]: org.jivesoftware.openfire.pubsub.CachingPubsubPersistenceProvider - Loading PubSub persistence provider to delegate to: class org.jivesoftware.openfire.pubsub.DefaultPubSubPersistenceProvider. 2025.10.03 02:27:48.822 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Default Node Configurations 2025.10.03 02:27:48.851 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Disco Server Features 2025.10.03 02:27:48.858 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Disco Server Items 2025.10.03 02:27:48.859 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Components 2025.10.03 02:27:49.127 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Entity Capabilities 2025.10.03 02:27:49.127 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Entity Capabilities Users 2025.10.03 02:27:49.173 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group (Shared) Metadata Cache 2025.10.03 02:27:49.175 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group 2025.10.03 02:27:49.175 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Group Metadata Cache 2025.10.03 02:27:49.201 INFO [main]: org.jivesoftware.openfire.pubsub.PubSubModule - 发布–订阅域:pubsub.localhost 2025.10.03 02:27:49.211 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service Pings Sent 2025.10.03 02:27:49.213 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC History 2025.10.03 02:27:49.215 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'conference' Rooms 2025.10.03 02:27:49.218 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'conference' Room Statistics 2025.10.03 02:27:49.222 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Rooms 2025.10.03 02:27:49.222 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Service 'lobby' Room Statistics 2025.10.03 02:27:49.235 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Rescheduling user idle task, recurring every PT15M 2025.10.03 02:27:49.240 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - 多用户聊天域:conference.localhost 2025.10.03 02:27:49.259 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - Rescheduling user idle task, recurring every PT15M 2025.10.03 02:27:49.260 INFO [main]: org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl - 多用户聊天域:lobby.localhost 2025.10.03 02:27:49.289 INFO [main]: org.jivesoftware.openfire.XMPPServer - Openfire 4.9.2 [2025年10月3日 上午2:27:49] 2025.10.03 02:27:49.671 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for DNS Records 2025.10.03 02:27:49.836 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for LDAP UserDN 2025.10.03 02:27:49.853 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.EncryptionArtifactFactory - Creating new SslContextFactory instance 2025.10.03 02:27:50.773 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'ANONYMOUS' SASL mechanism. 2025.10.03 02:27:50.773 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'CRAM-MD5' SASL mechanism. 2025.10.03 02:27:50.773 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'DIGEST-MD5' SASL mechanism. 2025.10.03 02:27:50.773 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'EXTERNAL' SASL mechanism. 2025.10.03 02:27:50.773 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'GSSAPI' SASL mechanism. 2025.10.03 02:27:50.773 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'JIVE-SHAREDSECRET' SASL mechanism. 2025.10.03 02:27:50.773 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'PLAIN' SASL mechanism. 2025.10.03 02:27:50.774 INFO [main]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'SCRAM-SHA-1' SASL mechanism. 2025.10.03 02:27:50.843 INFO [main]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Remote Server Configurations 2025.10.03 02:27:51.044 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Misses 2025.10.03 02:27:51.044 INFO [PluginMonitorTask-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Favicon Hits 2025.10.03 02:27:51.085 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.AdminConsolePlugin - 管理控制台正在侦听: http://0.0.0.0:9090 https://0.0.0.0:9091 2025.10.03 02:27:51.088 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'admin'. 2025.10.03 02:27:51.177 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'clientcontrol-2.1.10'. 2025.10.03 02:27:51.216 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'justmarried-1.3.0'. 2025.10.03 02:27:51.244 INFO [PluginMonitorExec-3]: org.igniterealtime.openfire.plugin.mucextinfo.MucExtInfoPlugin - Replacing original IQ Disco Info handlers for all MUC services with proxies. 2025.10.03 02:27:51.258 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'mucextinfo-1.0.0'. 2025.10.03 02:27:51.757 INFO [PluginMonitorExec-3]: uk.ifsoft.openfire.plugins.pade.PadePlugin - start pade server localhost:7443 2025.10.03 02:27:51.759 INFO [PluginMonitorExec-3]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for URL Source Content 2025.10.03 02:27:51.780 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.net.SASLAuthentication - Support added for the 'PADE' SASL mechanism. 2025.10.03 02:27:51.780 INFO [PluginMonitorExec-3]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Create recordings folder 2025.10.03 02:27:51.785 INFO [PluginMonitorExec-3]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Starting Openfire Meetings 2025.10.03 02:27:51.792 INFO [PluginMonitorExec-3]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Room Properties 2025.10.03 02:27:51.881 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJvbWrapper - Successfully initialized Jitsi Videobridge. /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Dconfig.file=/opt/openfire/bin/../plugins/pade/classes/jvb/application.conf -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/opt/openfire/bin/../plugins/pade/classes/jvb -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=config -Djava.util.logging.config.file=./logging.properties -Djdk.tls.ephemeralDHKeySize=2048 -cp ./jitsi-videobridge-2.1-SNAPSHOT.jar:./jitsi-videobridge-2.1-SNAPSHOT-jar-with-dependencies.jar org.jitsi.videobridge.MainKt --apis=rest 2025.10.03 02:27:51.900 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJicofoWrapper - Initializing Jitsi Focus Component (jicofo)... 2025.10.03 02:27:51.936 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJicofoWrapper - allowed external component access 2025.10.03 02:27:51.981 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.plugin.ofmeet.JitsiJicofoWrapper - Successfully initialized Jitsi Focus Component (jicofo). /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Dconfig.file=/opt/openfire/bin/../plugins/pade/classes/jicofo/application.conf -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/opt/openfire/bin/../plugins/pade/classes/jicofo -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=config -Djava.util.logging.config.file=./logging.properties -Djdk.tls.ephemeralDHKeySize=2048 -cp ./jicofo-1.1-SNAPSHOT.jar:./jicofo-1.1-SNAPSHOT-jar-with-dependencies.jar org.jitsi.jicofo.Main --host=localhost --port=5275 --domain=localhost --secret=ElaQPVPKh05Zy4pb3Rgrvmm5XFoXVadRneWHyRqr --user_domain=localhost --user_name=focus --user_password=yra84zlHMIbfpL8CQpJDYDz5ODmtQXPpoRVds1WN 2025.10.03 02:27:52.005 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - Initialized public web socket for /colibri-ws web socket 2025.10.03 02:27:57.504 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.plugin.ofmeet.OfMeetPlugin - OfMeet Plugin - Initialize IQ handler 2025.10.03 02:27:57.742 INFO [PluginMonitorExec-3]: org.quartz.impl.StdSchedulerFactory - Using default implementation for ThreadExecutor 2025.10.03 02:27:57.792 INFO [PluginMonitorExec-3]: org.quartz.simpl.SimpleThreadPool - Job execution threads will use class loader of thread: PluginMonitorExec-3 2025.10.03 02:27:57.815 INFO [PluginMonitorExec-3]: org.quartz.core.SchedulerSignalerImpl - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl 2025.10.03 02:27:57.815 INFO [PluginMonitorExec-3]: org.quartz.core.QuartzScheduler - Quartz Scheduler v.2.3.2 created. 2025.10.03 02:27:57.817 INFO [PluginMonitorExec-3]: org.quartz.simpl.RAMJobStore - RAMJobStore initialized. 2025.10.03 02:27:57.819 INFO [PluginMonitorExec-3]: org.quartz.core.QuartzScheduler - Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. Number of jobs executed: 0 Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. 2025.10.03 02:27:57.819 INFO [PluginMonitorExec-3]: org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties' 2025.10.03 02:27:57.819 INFO [PluginMonitorExec-3]: org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.3.2 2025.10.03 02:27:57.819 INFO [PluginMonitorExec-3]: org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started. 2025.10.03 02:27:57.820 INFO [PluginMonitorExec-3]: uk.ifsoft.openfire.plugins.pade.PadePlugin - Creating webauthn RelyingParty 2025.10.03 02:27:57.838 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'pade-1.8.4'. 2025.10.03 02:27:57.873 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'presence-1.7.4'. 2025.10.03 02:27:57.912 INFO [PluginMonitorExec-3]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for pushnotification.users 2025.10.03 02:27:57.912 INFO [PluginMonitorExec-3]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for pushnotification.messages 2025.10.03 02:27:57.936 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'pushnotification-1.0.1'. 2025.10.03 02:27:57.942 ERROR [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - An exception occurred while loading plugin 'restapi-plugin': java.lang.NullPointerException: null at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:582) [xmppserver-4.9.2.jar:4.9.2] 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] at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?] 2025.10.03 02:27:58.006 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'search-1.7.5'. 2025.10.03 02:27:58.116 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'usercreation-1.4.1'. 2025.10.03 02:27:58.171 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'userimportexport-2.8.0'. 2025.10.03 02:27:58.316 ERROR [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginServlet - An unexpected problem occurred while attempting to register servlets for plugin 'org.jivesoftware.openfire.plugin.UserServicePlugin@254478e0'. java.lang.ExceptionInInitializerError: null at java.lang.Class.forName0(Native Method) ~[?:?] at java.lang.Class.forName(Class.java:315) ~[?:?] at com.sun.proxy.$Proxy24.<clinit>(Unknown Source) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?] at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1022) ~[?:?] at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1008) ~[?:?] at com.sun.jersey.server.impl.application.WebApplicationImpl$26.run(WebApplicationImpl.java:1626) ~[?:?] at java.security.AccessController.doPrivileged(Native Method) ~[?:?] at com.sun.jersey.server.impl.application.WebApplicationImpl.createProxy(WebApplicationImpl.java:1623) ~[?:?] at com.sun.jersey.server.impl.application.WebApplicationImpl.<init>(WebApplicationImpl.java:335) ~[?:?] at com.sun.jersey.server.impl.container.WebApplicationProviderImpl.createWebApplication(WebApplicationProviderImpl.java:55) ~[?:?] at com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:66) ~[?:?] at com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:412) ~[?:?] at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:327) ~[?:?] at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:603) ~[?:?] at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) ~[?:?] at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394) ~[?:?] at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577) ~[?:?] at javax.servlet.GenericServlet.init(GenericServlet.java:180) ~[jetty-servlet-api-4.0.6.jar:?] at org.jivesoftware.openfire.plugin.JerseyWrapper.init(JerseyWrapper.java:83) ~[?:?] at org.jivesoftware.openfire.container.PluginServlet.registerServlets(PluginServlet.java:192) [xmppserver-4.9.2.jar:4.9.2] at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:631) [xmppserver-4.9.2.jar:4.9.2] 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] at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?] Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:122) ~[?:?] at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:91) ~[?:?] at javax.ws.rs.core.EntityTag.<clinit>(EntityTag.java:35) ~[?:?] ... 31 more Caused by: java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl at java.net.URLClassLoader.findClass(URLClassLoader.java:476) ~[?:?] at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?] at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?] at java.lang.Class.forName0(Native Method) ~[?:?] at java.lang.Class.forName(Class.java:315) ~[?:?] at javax.ws.rs.ext.FactoryFinder.newInstance(FactoryFinder.java:62) ~[?:?] at javax.ws.rs.ext.FactoryFinder.find(FactoryFinder.java:155) ~[?:?] at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:105) ~[?:?] at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:91) ~[?:?] at javax.ws.rs.core.EntityTag.<clinit>(EntityTag.java:35) ~[?:?] ... 31 more 2025.10.03 02:27:58.339 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'userservice-2.1.3'. 2025.10.03 02:27:58.384 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'userstatus-1.3.0'. 2025.10.03 02:27:58.422 INFO [PluginMonitorExec-3]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'xmppweb-0.10.3 Release 1'. 2025.10.03 02:27:58.436 INFO [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'jabberbrowsing-1.0.1'. 2025.10.03 02:27:58.579 INFO [PluginMonitorExec-5]: org.jivesoftware.util.cache.CacheFactory - Created local-only cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for MUC Extended Service Discovery 2025.10.03 02:27:58.633 INFO [PluginMonitorExec-5]: org.jivesoftware.openfire.fastpath.FastpathPlugin - start webchat 2025.10.03 02:27:58.658 INFO [PluginMonitorExec-5]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'fastpath-4.5.1'. 2025.10.03 02:27:58.698 INFO [PluginMonitorExec-4]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'contentfilter-1.9.0'. 2025.10.03 02:27:58.699 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins. 2025.10.03 02:27:58.824 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_c2s] - Started. 2025.10.03 02:27:58.827 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_c2s-directTLS] - Started. 2025.10.03 02:27:58.837 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_s2s] - Started. 2025.10.03 02:27:58.841 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[socket_s2s-directTLS] - Started. 2025.10.03 02:27:58.844 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component] - Started. 2025.10.03 02:27:58.856 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[component-directTLS] - Started. 2025.10.03 02:27:58.862 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager] - Started. 2025.10.03 02:27:58.866 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.ConnectionListener[connection_manager-directTLS] - Started. 2025.10.03 02:27:58.870 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.spi.EncryptionArtifactFactory - Creating new SslContextFactory instance 2025.10.03 02:27:58.876 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpSessionManager - Starting instance 2025.10.03 02:27:59.039 INFO [PluginMonitorTask-2]: org.jivesoftware.openfire.http.HttpBindManager - HTTP bind service started 2025.10.03 02:27:59.825 INFO [socket_c2s-thread-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Locked Out Accounts 2025.10.03 02:28:00.212 INFO [socket_c2s-thread-2]: org.jivesoftware.util.cache.CacheFactory - Created cache [org.jivesoftware.util.cache.DefaultLocalCacheStrategy] for Sequences 2025.10.03 02:28:19.053 ERROR [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - An exception occurred while loading plugin 'restapi-plugin': java.lang.NullPointerException: null at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:582) [xmppserver-4.9.2.jar:4.9.2] 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] at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?] 2025.10.03 02:28:39.079 ERROR [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginManager - An exception occurred while loading plugin 'restapi-plugin': java.lang.NullPointerException: null at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:582) [xmppserver-4.9.2.jar:4.9.2] 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] at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?]
10-04
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值