【问题标题】:Ability to add "plugin" in war-mode能够在战争模式下添加“插件”
【发布时间】:2013-03-20 12:15:58
【问题描述】:

我正在寻找一种方法让我的 grails-app 的管理员角色添加“功能”/“插件” 到正在运行的服务器,以便系统立即使用它。

更具体地说,这里是一个小例子:

package domains

abstract class Provider {

    def protected name;
    def protected activated = false;
    def private valid;

    def Provider( providerName ) {
        if( providerName != null ) {
            name = providerName;
            valid = true;
        else valid = false;
    }

    def isValid() { valid }
    def getName() { name }
    def isActivated() { activated }
    def setActivated( bool ) { activaed = bool }

    abstract List<String> search( String searchKey );
}

一些子类:

package googleprovider

import Provider;

class GoogleProvider extends Provider {

    def GooleProvider( active ) {
        super( "Google" );
        activated = active;
    }

    @Override
    List<String> search( String searchKey ) {
        return ["http://www.google.com"]
    }
}

现在每个“插件”/“功能”都应该从 Provider 扩展,并作为任何文件放置在“plugins/providers/”目录中。

服务器应在“onAdd”事件或该管理员控制的事件上创建此 GoogleProvider 的实例。

有没有可能做到这一点?还是我完全在做梦? 如果有可能,只是我走错了方向, 就告诉我嘛! ;-)

感谢您的宝贵时间!

【问题讨论】:

    标签: grails plugins groovy


    【解决方案1】:

    我建议您寻找注册新 Artefacts 的插件,因此在您的启动中您可以查找此类。您还可以在 grails-app 中创建一个文件夹来存储提供程序类。

    例如,参见Grails Dao Artefacts 插件。它在grails-app 内创建daos 文件夹,并将所有类视为DAO Artefact。您还可以在您的课程中使用 Depenceny Injection(例如服务)。

    需要注意的几点

    更多信息在

    【讨论】:

    • 我已经阅读了一些内容,但似乎需要一些时间才能启动并运行它。它实际上看起来很有趣,当我有更多空闲时间时,我会花更多时间在它上面。只是现在不行,因为我的项目必须在星期五之前完成。无论如何,感谢您提供此信息!
    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多