【问题标题】:Xwiki reload component jarXwiki 重新加载组件 jar
【发布时间】:2014-11-27 02:31:55
【问题描述】:

根据guide,向XWiki 添加新组件需要将jar 文件放入XE_WAR_HOME/WEB-INF/lib。但是,我似乎需要重新启动 tomcat 才能使用新组件。有没有办法解决这个重启?组件管理器设法从存储库安装新组件而无需重新启动 tomcat,因此原则上似乎是可行的......

在相关点上,如果我用同名的更新版本替换 jar,即使重新启动 tomcat 似乎也不会更新现有组件。那么在这种情况下我可以显式触发重新加载吗?

【问题讨论】:

    标签: tomcat xwiki


    【解决方案1】:

    该指南已同时更新,并展示了如何执行此操作。

    注意:目前使用jetty作为容器时,以下内容不起作用;请参阅错误报告:http://jira.xwiki.org/browse/XWIKI-12781

    简而言之:将本地 maven 存储库添加到 xwiki.properties

    extension.repositories=local:maven:file://${sys:user.home}/.m2/repository
    extension.repositories=maven-xwiki:maven:http://nexus.xwiki.org/nexus/content/groups/public
    extension.repositories=extensions.xwiki.org:xwiki:http://extensions.xwiki.org/xwiki/rest/ 
    

    (需要另外两行重新添加“默认”repos)

    在 Wiki UI 中,安装 Extension Tweak

    那么对于每个构建周期:

    • 通过mvn install 构建您的扩展
    • 转到 Wiki 中的扩展部分
    • 在“高级搜索”中查找您的扩展程序(您的本地 maven 存储库不可搜索,因此您需要告知完整 id - 即my.extension.group:my-extension-id 和版本 - 即0.1-SNAPSHOT
    • 删除当前安装的扩展
    • 通过 /xwiki/bin/view/Admin/InstalledExtensionsTweak 刷新缓存
    • 再次在“高级搜索”中查找您的扩展程序,然后安装它

    因为我不想将我的答案限制在复制指南中的“Howto”,所以这里有一个小脚本应该为您完成“重新安装”部分(即在运行mvn install 后使用它):

    # "config" section:
    
    # variables should be URL encoded; '%3A' is ':' 
    EXTENSION_ID=org.xwiki.contrib%3Aapplication-mocca-calendar-ui
    VERSION=2.5-SNAPSHOT
    BASE_URL=http://localhost:8080/xwiki
    
    # of course you can use curl here if you prefer
    WGET="wget -q -O /dev/null --auth-no-challenge --http-user=Admin --http-password=admin"
    # alternative for debugging
    #WGET="wget -S -O - --auth-no-challenge --http-user=Admin --http-password=admin"
    
    QUERY="extensionId=${EXTENSION_ID}&extensionVersion=${VERSION}&extensionNamespace=wiki%3Axwiki&form_token=dummy"
    
    set -o errexit
    
    # first remove the old version of the extension
    $WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=uninstall&${QUERY}"
    
    # confirm uninstall
    sleep 1
    $WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=continue&${QUERY}"
    # confirm uninstall again (this time to "remove unused pages") 
    sleep 1
    $WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=continue&${QUERY}"
    
    # flush the cache
    $WGET "${BASE_URL}/bin/get/Admin/InstalledExtensionsTweak?basicauth=1&eaction=clean_confirm"
    
    # add new version
    $WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=install&${QUERY}"
    
    # confirm: start adding
    sleep 1
    $WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=continue&${QUERY}"
    
    # just in case we get a conflict: overwrite with new version
    sleep 1.5
    $WGET "${BASE_URL}/bin/get/XWiki/AddExtensions?basicauth=1&extensionAction=continue&autoResolve=true&versionToKeep=NEXT&${QUERY}"
    

    如果你想使用这个脚本,你必须通过设置csrf.enabled = false 来禁用xwiki.properties 中的CSRF-Protection。 (或者,您可以通过从响应中的 HTML 读取 csrf-token 来修改脚本。)

    脚本没有错误处理。如果您在执行后没有看到更新,请执行上述步骤以找出问题所在。

    【讨论】:

    • 好极了。谢谢你这么详细的回答。
    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 2018-02-22
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多