gpt4 book ai didi

deployment - JBoss AS 7 部署顺序和时间

转载 作者:行者123 更新时间:2023-12-03 16:45:52 25 4
gpt4 key购买 nike

我对一般的部署顺序和具体的时间安排有疑问。

我有一个 ear 1,它通过一个 bean 和一些队列提供一些功能。队列在 standalone.xml 中配置。使用来自 ear1 的此服务的另一个 ear 2。

所以依赖看起来像:ear1 <-- ear2

所以我将 ear 2 的部署结构配置为依赖于 ear 1,现在部署顺序本身是正确的。

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="deployment.ear1.ear" />
</dependencies>
</deployment>
</jboss-deployment-structure>

部署顺序现在是正确的,但我现在拥有的是竞争条件,这是由于(我猜)来自 ear 1 的未初始化 bean。

当我延迟部署 ear2 时,一切正常。

有谁知道如何控制部署的时间。能否通过 jboss-deployment-structure.xml 不仅指定部署顺序,还指定开始下一个部署所需的生命周期?

更新

我试图指定包含要使用的服务的实际 bean jar。这也行不通。看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="deployment.ear1.ear.bean.jar" />
</dependencies>
</deployment>
</jboss-deployment-structure>

最佳答案

您现在可能已经知道,耳间依赖性将在 JBoss 7.2 中引入。
我对其他 EAR 使用的一个 EAR 定义服务有同样的问题。我已经通过完全关闭 standalone.xml 中的自动部署解决了这个问题:

    <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" auto-deploy-zipped="false" auto-deploy-exploded="false"/>
</subsystem>

并在启动 JBoss 之前在单独的线程中运行以下脚本。该脚本创建部署列表并使用 JBoss 7 部署扫描器标记文件按指定顺序部署它们。 IE。它为第一次部署创建 .dodeploy 标记,然后等待部署,然后为第二次部署等创建 .dodeploy 标记。

#!/bin/bash
function contains() {
local n=$#
local value=${!n}
for ((i=1;i < $#;i++)) {
if [ "${!i}" == "${value}" ]; then
echo "y"
return 0
fi
}
echo "n"
return 1
}


DD="/home/martinv/jboss-as-7.1.1.Final/standalone/deployments"
ORDER_FILE="/home/martinv/order.txt"

echo "[MDC] Manual deployment control"
echo "[MDC] -------------------------"
echo "[MDC] Removing markers"
rm -f $DD/*.dodeploy $DD/*.isdeploying $DD/*.deployed $DD/*.failed $DD/*.undeployed $DD/*.pending $DD/*.isundeploying

APPS_ALL=( $( ls -1 $DD | grep '.ear$\|.jar$\|.war$\|.sar$' ) )

APPS_ORDER=( $( cat $ORDER_FILE ) )

echo "[MDC] ${#APPS_ALL[@]} apps in $DD: ${APPS_ALL[@]}"
echo "[MDC] Order defined for ${#APPS_ORDER[@]} apps: ${APPS_ORDER[@]}"

for APP in "${APPS_ALL[@]}"
do
if [ $(contains "${APPS_ORDER[@]}" $APP) == "n" ]; then
APPS_ORDER=("${APPS_ORDER[@]}" "$APP")
fi
done

echo "[MDC] Final order of ${#APPS_ORDER[@]} apps: ${APPS_ORDER[@]}"

for APP in "${APPS_ORDER[@]}"
do
echo "[MDC] Scheduled for deploy: $APP"
touch "$DD/$APP.dodeploy"
while [ ! -f "$DD/$APP.deployed" -a ! -f "$DD/$APP.failed" ]; do
sleep 1
done
RESULT=`ls -1 $DD | egrep "$APP.failed|$APP.deployed"`
echo "[MDC] Finished deploying $APP, result: $RESULT"
done

关于deployment - JBoss AS 7 部署顺序和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11343732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com