繁体   English   中英

由于意外的元素“池”,JBoss 7.1.1无法启动

[英]JBoss 7.1.1 doesn't start because of unexpected element “pool”

我添加池元素时收到以下错误消息:

引起:org.jboss.as.connector.util.ParserException:IJ010061:意外的元素:池

如果我删除池元素它的工作原理。 我已经检查了docs文件夹中的XSD,我很确定这是对的吗? 为什么会失败?

    <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0">
        <resource-adapters>
            <resource-adapter>
                <archive>
                    jackrabbit-jca-2.6.2.rar
                </archive>
                <transaction-support>XATransaction</transaction-support>
                <connection-definitions>
                    <connection-definition class-name="org.apache.jackrabbit.jca.JCAManagedConnectionFactory" jndi-name="java:/jca/JcrRepository" enabled="true" use-java-context="true" pool-name="jackrabbit-jca-2_6_2_rar-Pool" use-ccm="true">
                    <pool>
                        <min-pool-size>1</min-pool-size>
                        <max-pool-size>4</max-pool-size>
                    </pool>
                   </connection-definition>
                </connection-definitions>
            </resource-adapter>
        </resource-adapters>
    </subsystem>

这不是一个错误,这是一个功能 ;)

...

让我们深入了解负责任的实现:

当您查看负责解析器的源时,您可以看到以下内容

     case TRANSACTION_SUPPORT: {
                         if (txSupportMatched) {
                            throw new ParserException(bundle.unexpectedElement(TRANSACTIONSUPPORT.getXmlName()));
                        }
                        String value = rawElementText(reader);
                        TRANSACTIONSUPPORT.parseAndSetParameter(value, operation, reader);
                        isXa = value != null && TransactionSupportEnum.valueOf(value) == TransactionSupportEnum.XATransaction;
                        txSupportMatched = true;
                        break;
                    }

这是资源适配器标记的解析。 如果您编写XATransaction-keyword,则(默认为false)isXa-var切换为true。

现在,connection-definition-tag的解析器需要一个xa-pool-tag

           case XA_POOL: {
                        if (! isXa) throw new ParserException(bundle.unexpectedElement(CommonConnDef.Tag.XA_POOL.name()));
                        if (poolDefined)
                            throw new ParserException(bundle.multiplePools());
                        parseXaPool(reader, connectionDefinitionNode);
                        poolDefined = true;
                        break;
                    }
                    case POOL: {
                        if (isXa) throw new ParserException(bundle.unexpectedElement(CommonConnDef.Tag.POOL.name()));
                        if (poolDefined)
                            throw new ParserException(bundle.multiplePools());
                        parsePool(reader, connectionDefinitionNode);
                        poolDefined = true;
                        break;
                    }

根据XATransaction定义,ironjacamar-impl创建不同的池实现。 并且架构的xa-poolType允许比标准池类型更多的配置。

但我认为应该在某处记录,至少在schema.xsd中

好问题,你是完全正确的。 根据架构这是有效的,我想这是JBoss 7.11的一个错误。你可以在此提交一个bug。 我想你可以继续使用以前的JBoss版本,这个问题不会出现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM