O serializador não está definido no arquivo de configuração XSQL
Pergunta
Estou tentando escrever alguns serializadores personalizados para um servlet Oracle XSQL. Estou tentando manter meus dois serializadores dentro do .ear local porque eles ainda estão sendo desenvolvidos e testados e não quero prejudicar o código de produção. No entanto, estou recebendo o seguinte erro
XML-255021: o Serializer XLSV2 não está definido no arquivo de configuração XSQL
A lista de diretórios de .war/web-inf parece
classes/
scott/
XLSv2Serializer.class
XLSXSerializer.class
lib/
<empty>
web.xml
MyConfig.xml
Meu web-inf/web.xml parece:
<web-app>
<display-name>demoSerializer</display-name>
<distributable />
<init-param>
<param-name>xsql.config</param-name>
<param-value>MyConfig.xml</param-value>
<description>use my dev config file</description>
</init-param>
</web-app>
MyConfig.xml parece:
<XSQLConfig>
<serializerdefs>
<serializer>
<name>XLSv2</name>
<class>scott.XLSv2Serializer</class>
</serializer>
<serializer>
<name>XLSX</name>
<class>scott.XLSXSerializer</class>
</serializer>
</serializerdefs>
</XSQLConfig>
O que estou perdendo alguma coisa?
Solução
Descobriu isso. Primeiro, mudei
<?xml-stylesheet serializer="{@serializer}"?>
para
<?xml-stylesheet serializer="java:scott.XLSXSerializer"?>
o que o forçou a procurar no web-inf/classes. Como não tenho acesso, edite o XSQLConfig e meus serializadores são locais para o .war, estou jogando com um pequeno aborrecimento que tenho que mudar a manualmente o serializador ao testar.
Depois disso, eu estava recebendo um "serializador não pôde ser carregado por erro".
Apache poi ooxml requer xmlBeans. O segundo problema era que o XMLBeans não estava sendo encontrado no servidor e, portanto, o serializador morreria silenciosamente e nunca seria carregado. Por alguma razão, a exceção que estava sendo jogada não foi entrar no tronco. Depois de mudar o código, principalmente onde a pasta de trabalho estava sendo criada, finalmente vi a exceção. A correção estava colocando XMLBeans no diretório Lib no web-inf/
Finalmente, uma nota lateral: como substituo o xsql.config nunca estava funcionando, mesmo que a documentação diga que deveria. Descobri isso escrevendo conscientemente o XML malformado em myconfig.xml. O aplicativo ainda foi implantado e funcionou bem quando deveria ter falhado.
Se alguém souber de uma maneira de substituir o xsqlconfig.xml para um único .ear, eu adoraria ouvi -lo.