【问题标题】:Openfire Plugin: Null Pointer Exception when trying to get the instance of the pluginOpenfire插件:尝试获取插件实例时出现空指针异常
【发布时间】:2014-12-31 11:34:08
【问题描述】:

我正在为 openfire 开发一个插件。

在 jsp 中,我使用 getter 和 setter 来传输数据。 我的问题类似于这里提到的问题: https://community.igniterealtime.org/message/155892#155892

我从一个星期开始就一直想弄清楚。

我有以下代码:

<%@ page
   import="org.jivesoftware.openfire.XMPPServer,
           de.meisterfuu.openfire.plugin.teamFantasian_UserServicePlugin,
           org.jivesoftware.util.ParamUtils,
           org.jivesoftware.openfire.container.Plugin,
           org.jivesoftware.util.*,
           java.util.*,
           java.util.HashMap,
           java.util.Map"
   errorPage="error.jsp"%>


<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt"%>

<%
    boolean save = request.getParameter("save") != null;    
    String pNameSpace = ParamUtils.getParameter(request, "pNameSpace");
    String pModule = ParamUtils.getParameter(request, "pModule");
    String pCreateUser = ParamUtils.getParameter(request, "pCreateUser");
    String pCreateUser_input = ParamUtils.getParameter(request, "pCreateUser_input");
    String pCreateUser_output = ParamUtils.getParameter(request, "pCreateUser_output");




  teamFantasian_UserServicePlugin plugin = (teamFantasian_UserServicePlugin) XMPPServer.getInstance().getPluginManager().getPlugin("teamFantasian_UserServicePlugin");


    Collection<Plugin> a = XMPPServer.getInstance().getPluginManager().getPlugins();

    out.write(Arrays.toString(a.toArray()));

    if(plugin == null) {

    out.println("Cant find plugin ..!!");
    return;
    }

这是我的目录结构:

/home/manoj/final/Openfire/src/plugins/teamFantasian_UserServicePlugin
|-- lib
|   |-- asm-3.1.jar
|   |-- commons-pool2-2.0.jar
|   |-- fluent-hc-4.3.2.jar
|   |-- httpclient-4.3.3.jar
|   |-- httpcore-4.3.2.jar
|   |-- jackson-core-asl-1.9.2.jar
|   |-- jackson-jaxrs-1.9.2.jar
|   |-- jackson-mapper-asl-1.9.2.jar
|   |-- jackson-xc-1.9.2.jar
|   |-- jedis-2.4.2.jar
|   |-- jersey-bundle-1.18.jar
|   |-- jersey-servlet-1.18.jar
|   |-- jettison-1.1.jar
|   `-- jsr311-api-1.1.1.jar
|-- logo_large.gif
|-- logo_small.gif
|-- plugin.xml
|-- readme.html
`-- src
    |-- i18n
    |   `-- teamFantasian_UserServicePlugin_i18n.properties
    |-- java
    |   `-- de
    |       `-- meisterfuu
    |           `-- openfire
    |               `-- plugin
    |                   |-- teamFantasian_UserServicePlugin.java
    |                   `-- UserServiceHelper.java
    `-- web
        |-- images
        |   |-- error-16x16.gif
        |   `-- success-16x16.gif
        `-- teamFantasian_UserServicePlugin.jsp

10 directories, 24 files

【问题讨论】:

    标签: plugins openfire


    【解决方案1】:

    不要在插件名称中使用下划线。 将您的插件重命名为 teamFantasianUserServicePlugin。

    并通过以下方式获取实例:

    XMPPServer.getInstance().getPluginManager().getPlugin("teamfantasianuserserviceplugin");
    

    插件名称应为小写。

    【讨论】:

    • 嘿,你能告诉我任何参考资料,关于我应该如何使用父插件。我找不到任何示例代码。
    • “父插件”是什么意思?
    • 我想调用另一个插件的方法。例如我有 userservice.jar,我想在我自己的插件中使用这个插件的方法,而不是仅仅复制源代码,这样如果找到 userservice.jar 的新更新,那么我不必再次重构代码。
    • parentPlugin -- 父插件的名称(为“foo.jar”插件提供“foo”)。当插件有父插件时,将使用父插件的类加载器,而不是创建新的类加载器。这让插件可以更紧密地协同工作。如果没有父插件,子插件将无法运行。igniterealtime.org/builds/openfire/docs/latest/documentation/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多