tomcat - Xwiki 重新加载组件 jar

标签 tomcat xwiki

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

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

最佳答案

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

简而言之:将本地 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/ 

(需要另外两行来重新添加“默认”存储库)

在 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}"

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

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

附录:至少在 XWiki 14.x 中,get/XWiki/AddExtensions 应该替换为 get/XWiki/Extensions

关于tomcat - Xwiki 重新加载组件 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26155119/

相关文章:

amazon-web-services - 如何在 EKS 集群中基于内存的指标实现自动缩放

java - 用于 Java 的 Creole 1.0 到 HTML5 渲染器

java - xwiki java.lang.OutOfMemoryError : PermGen space 错误

jsp lang参数在struts 1.1中自动存入cookie

Tomcat 和上下文路径

Tomcat 8.5 : Allow BackSlash

java - 全新安装时出现 XWiki 错误 500

grails - Grails-如何将Wiki页面嵌入Grails应用程序

tomcat - xwiki 占用 100 个 cpu

java - Struts 2 Spring Framework 上的常规 HTML 页面