java - JBoss 7.1.1 no se inicia debido a un "grupo" inesperado de elementos
java-ee jboss7.x (2)
Aparece el siguiente mensaje de error cuando agrego el elemento de grupo:
Causado por: org.jboss.as.connector.util.ParserException: IJ010061: Elemento inesperado: pool
Si elimino el elemento del grupo, funciona. He comprobado el XSD en la carpeta de documentos y estoy bastante seguro de que es así? ¿Por qué falla?
<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>
Buena pregunta y tienes toda la razón. Esto es válido de acuerdo con el esquema y supongo que este es un error de JBoss 7.11. Puede presentar un error sobre esto. Creo que puedes continuar usando una versión anterior de JBoss y este problema no estará allí.
No es un error, es una característica;)
...
Vamos a profundizar un poco en la implementación responsable:
Cuando miras la fuente del analizador responsable, puedes ver lo siguiente
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;
}
Ese es el análisis sintáctico de la etiqueta de adaptador de recursos. Si escribe la palabra clave XATransaction, el (por defecto es falso) isXa-var cambia a verdadero.
Ahora el analizador de la etiqueta-definición-conexión espera un 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;
}
Dependiendo de la definición de XATransaction, ironjacamar-impl crea diferentes implementaciones de grupo. Y el xa-poolType del esquema permite más configuración que el pool-tip estándar.
Pero creo que debería documentarse en alguna parte, al menos en schema.xsd