openfire 插件与插件之间调用(数据传值)简单测试
新建两个插件(1)、(2):
(1)、pluginInvokeFirstPlugin,主要源码如下:
package org.jivesoftware.openfire.plugin;
import java.io.File;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
public class PluginInvokeFirstPlugin implements Plugin {
private PluginInvokeSecondPlugin pluginInvokeSecondPlugin;
private static PluginManager pluginManager;
public PluginInvokeFirstPlugin() {
}
public void initializePlugin(PluginManager manager, File pluginDirectory) {
pluginManager = manager;
pluginInvokeSecondPlugin=(PluginInvokeSecondPlugin) XMPPServer.getInstance().getPluginManager().getPlugin("pluginInvokeSecondPlugin");
System.out.println("这里是第一个插件,下面开始调用第二个插件:");
pluginInvokeSecondPlugin.sayHello();
System.out.println("第二个插件调用完成,请看输出。");
}
public void destroyPlugin() {
pluginInvokeSecondPlugin.destroyPlugin();
}
private static PluginManager getPluginManager() {
return pluginManager;
}
}
(2)、pluginInvokeSecondPlugin,主要源码如下:
package org.jivesoftware.openfire.plugin;
import java.io.File;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
public class PluginInvokeSecondPlugin implements Plugin {
private static PluginManager pluginManager;
public PluginInvokeSecondPlugin() {
}
public void initializePlugin(PluginManager manager, File pluginDirectory) {
pluginManager = manager;
}
public void sayHello() {
System.out.println("本插件由第一个插件调用!");
System.out.println("这是第二个插件测试===========");
}
public void destroyPlugin() {
System.out.println(".......");
}
private static PluginManager getPluginManager() {
return pluginManager;
}
}
首先编译源码(2)
Buildfile: D:\eclipse\Myeclipse\openfire_src\build\build.xml
plugin:
[delete] Deleting directory D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin
[delete] Deleting: D:\eclipse\Myeclipse\openfire_src\work\plugins\pluginInvokeSecondPlugin.jar
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\target
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\target\classes
[javac] Compiling 1 source file to D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\target\classes
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\target\lib
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\work\lib\source
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\work\lib\classes
[jar] Building jar: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\target\lib\plugin-pluginInvokeSecondPlugin.jar
[delete] Deleting directory D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\work\lib\classes
[delete] Deleting directory D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\work\lib\source
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\jar
[copy] Copying 1 file to D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\jar
[pack200] Building: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\target\lib\plugin-pluginInvokeSecondPlugin.jar.pack
[pack200] Packing with Pack200
[pack200] Source File :D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\target\lib\plugin-pluginInvokeSecondPlugin.jar
[pack200] Dest. File :D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\target\lib\plugin-pluginInvokeSecondPlugin.jar.pack
[copy] Copying 1 file to D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\jar
[jar] Building jar: D:\eclipse\Myeclipse\openfire_src\work\plugins\pluginInvokeSecondPlugin.jar
[delete] Deleting directory D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeSecondPlugin\jar
openfireHome:
adminPlugin:
spank:
[copy] Warning: pluginInvokeSecondPlugin.jar modified in the future.
[copy] Copying 1 file to D:\eclipse\Myeclipse\openfire_src\target\openfire\plugins
BUILD SUCCESSFUL
Total time: 1 second
编译成功。
然后编译源码(1)
Buildfile: D:\eclipse\Myeclipse\openfire_src\build\build.xml
plugin:
[delete] Deleting directory D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeFirstPlugin
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeFirstPlugin
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeFirstPlugin\target
[mkdir] Created dir: D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeFirstPlugin\target\classes
[javac] Compiling 1 source file to D:\eclipse\Myeclipse\openfire_src\work\plugins-dev\pluginInvokeFirstPlugin\target\classes
[javac] D:\eclipse\Myeclipse\openfire_src\src\plugins\pluginInvokeFirstPlugin\src\java\org\jivesoftware\openfire\plugin\PluginInvokeFirstPlugin.java:12: 找不到符号
[javac] 符号: 类 PluginInvokeSecondPlugin
[javac] 位置: 类 org.jivesoftware.openfire.plugin.PluginInvokeFirstPlugin
[javac] private PluginInvokeSecondPlugin pluginInvokeSecondPlugin;
[javac] ^
[javac] D:\eclipse\Myeclipse\openfire_src\src\plugins\pluginInvokeFirstPlugin\src\java\org\jivesoftware\openfire\plugin\PluginInvokeFirstPlugin.java:21: 找不到符号
[javac] 符号: 类 PluginInvokeSecondPlugin
[javac] 位置: 类 org.jivesoftware.openfire.plugin.PluginInvokeFirstPlugin
[javac] pluginInvokeSecondPlugin=(PluginInvokeSecondPlugin) XMPPServer.getInstance().getPluginManager().getPlugin("pluginInvokeSecondPlugin");
[javac] ^
[javac] 2 错误
[trycatch] Caught exception: Compile failed; see the compiler error output for details.
[echo] Error building plugin: pluginInvokeFirstPlugin. Exception:
[echo] D:\eclipse\Myeclipse\openfire_src\build\build.xml:1310: Compile failed; see the compiler error output for details.
openfireHome:
adminPlugin:
spank:
BUILD SUCCESSFUL
Total time: 1 second
出现两个错误。
分析讨论:openfire功能缺陷?安全因素?还是......
openfire插件之间传值、调用,求高人解答!

浙公网安备 33010602011771号