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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top