5

プール要素を追加すると、次のエラー メッセージが表示されます。

原因: 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>
4

2 に答える 2

3

これはバグではなく、機能です ;)

...

責任ある実装について少し深く掘り下げてみましょう。

責任のあるパーサーのソースを調べると、次のことがわかります

     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;
                    }

それが resource-adapter-tag の解析です。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-definition に応じて、ironjacamar-impl は異なるプール実装を作成します。また、スキーマの xa-poolType では、標準プールタイプよりも多くの構成が可能です。

しかし、少なくともschema.xsdのどこかに文書化する必要があると思います

于 2013-08-08T06:30:57.117 に答える
0

良い質問です。あなたは完全に正しいです。これはスキーマによると有効であり、これは JBoss 7.11 のバグだと思います。これについてバグを報告できます。以前のバージョンの JBoss を引き続き使用できると思いますが、この問題は発生しません。

于 2013-08-02T04:58:11.593 に答える