Pergunta

Eu estou usando Java para acessar servidor de conteúdo Alfresco via a sua API de serviços web para importar algum conteúdo nele. O conteúdo deve ter algumas propriedades NamedValue definida para UTF-8 (cirílico) string. Recebo a exceção analisador Sax:

org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1b) was found in the element content of the document.

A aparência de código algo como isto:

NamedValue[] namedValueProperties = new NamedValue[2];

namedValueProperties[0] = Utils.createNamedValue(Constants.PROP_NAME, name );
namedValueProperties[1] = Utils.createNamedValue("{my.custom.model}myProperty", cyrillicString);

CMLCreate create = new CMLCreate("1", parentReference, null, null, null, documentType, namedValueProperties);
CML cml = new CML();
cml.setCreate(new CMLCreate[]{create});
UpdateResult[] results = null;

try {
   results = WebServiceFactory.getRepositoryService().update(cml);
} catch (...)
    Here comes the "org.xml.sax.SAXParseException"
} 

Alguém sabe como resolver este problema?

Foi útil?

Solução

O problema era que a biblioteca-ao ar livre-web-service client.jar que usei foi de distribuição 2.9b (estou batendo 2.9b servidor de conteúdo da comunidade), e dependência libs bcprov-jdk15-136.jar e xmlsec-1.4. 0.jar não eram adequadas (permaneceu idade de 2,1 dist). Deveria ter-bcprov jdk15-137.jar usados ??e xmlsec-1.4.1.jar que são implantados juntamente com distribuição 2.9b.

Outras dicas

A maneira mais fácil de contornar o problema é que eu acho que para escapar cyrillicString, por exemplo, com escapeXml de Jacarta Commons, ou convertendo a corda toda a entidades XML, se não é o suficiente. Mas no longo prazo, Alfresco devem ser fixados, de modo a abertura de um bilhete pode ser uma boa escolha também.

É um pouco difícil dizer se este é ou não um bug com Alfresco, sem ver os dados que você está tentando persistir. Qual versão do Alfresco você está usando? Eu encontrei este bug no sistema de gerenciamento de incidentes de Alfresco. Especificamente, isso é com 2.1 comunidade, e parece sugerir que há problemas com a codificação diferente de UTF-8, por isso pode ou não ser relacionados ao seu problema.

Uma coisa que você poderia fazer para depurar este problema é escrever um pequeno teste usando Java embutido de Alfresco (server-side) API, tentando persistem os mesmos dados, e veja se você ainda receber um erro (que provavelmente não seria SAXParseException se você fizer). Se você não receber um erro, você sabe que há provavelmente um bug na API do serviço web do Alfresco (que infelizmente não é tão bem suportado como o Java embutido ou APIs REST), e você pode querer adicionar um comentário sobre o relatório de bug já referi anteriormente, ou arquivar o seu próprio. Se você ainda receber um erro com o API embutido, então ele poderia ainda ser tanto o seu código ou a deles que é o problema.

Hope que era pelo menos um pouco útil!

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