部署数据源失败,因为 JBoss 认为它​​已经存在

Posted

技术标签:

【中文标题】部署数据源失败,因为 JBoss 认为它​​已经存在【英文标题】:Failure to deploy datasource because JBoss thinks it already exists 【发布时间】:2018-06-02 08:31:15 【问题描述】:

我在 JBoss 7.0.5 应用程序上运行 gradlew deploy,当我尝试部署时它抱怨我的一个数据源已经存在:

Deploying profile/deploy-datasources.cli

    "outcome" => "failed",
    "failure-description" => "domain-failure-description" => "WFLYCTL0158: Operation handler failed: java.lang.IllegalStateException: WFLYCTL0363: Capability 'org.wildfly.data-source.MarketDataSource' is already registered in context 'profile=Int-Market'.",
    "rolled-back" => true

我使用 JBoss cli 部署数据源(deploy-datasources.cli):

if (outcome == success) of ./subsystem=datasources/data-source=MarketDataSource:read-resource()
    data-source remove --name=MarketDataSource --profile=@jboss.profile@
end-if
./subsystem=datasources/data-source=MarketDataSource:add( \
    jta=false, \
    jndi-name="java:/MarketDataSource", \
    driver-name="oracle", \
    connection-url="@leftthisout@", \
    user-name="@leftthisout@", \
    password="$\@leftthisout@\", \
    min-pool-size=1, \
    max-pool-size=5, \
    validate-on-match=true, \
    valid-connection-checker-class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker", \
    stale-connection-checker-class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker", \
    exception-sorter-class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter", \
    idle-timeout-minutes=10, \
    prepared-statements-cache-size=120, \
    enabled=true \
)

if (outcome == success) of ./subsystem=datasources/data-source=MarketDataSource:read-resource
  ./subsystem=datasources/data-source=MarketDataSource/connection-properties=defaultRowPrefetch:add(value=100)
end-if

并再次使用 JBoss cli 取消部署数据源 (undeploy-datasources.cli):

if (outcome == success) of ./subsystem=datasources/data-source=MarketDataSource:read-resource()
    data-source remove --name=MarketDataSource --profile=@jboss.profile@
end-if

我为另一个数据源做同样的事情(除了更改名称、密码、用户名等),我对此没有任何问题。我使用了差异检查器来确保这一点。这个数据源必须配置错误,而不是另一个,但我不知道它是什么。

【问题讨论】:

【参考方案1】:

原来JBoss 7.0.* 有一个错误,here 解释了所以我只是取消了应用程序的部署并重新启动了我的域控制器。然后再次部署。

升级到JBoss 7.1.* 也可以,但我目前没有这个选项,所以这是解决方法。

【讨论】:

以上是关于部署数据源失败,因为 JBoss 认为它​​已经存在的主要内容,如果未能解决你的问题,请参考以下文章

Jboss 7战争部署失败

在 jboss 中部署应用程序失败

Eclipse 生成的war文件在JBoss中无效

JBoss AS 7 迁移 - 部署失败问题

我可以让 JBoss CLI 工具报告导致我的部署失败的异常吗?

如何让 JBoss/WildFly 在应用程序部署/初始化失败时自动终止?