Domanda

Sto usando Java per accedere al server di contenuti Alfresco tramite l'API del servizio Web per importare alcuni contenuti al suo interno. Il contenuto dovrebbe avere alcune proprietà NamedValue impostate su stringa UTF-8 (cirillica). Continuo a ricevere l'eccezione del parser Sax:

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

Il codice è simile al seguente:

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

Qualcuno sa come risolvere questo problema?

È stato utile?

Soluzione

Il problema era che la libreria alfresco-web-service-client.jar che usavo proveniva dalla distribuzione 2.9B (sto colpendo il server dei contenuti della comunità 2.9B) e le librerie di dipendenza bcprov-jdk15-136.jar e xmlsec-1.4. 0.jar non erano adeguati (sono rimasti vecchi da 2,1 dist). Avrei dovuto usare bcprov-jdk15-137.jar e xmlsec-1.4.1.jar che sono distribuiti insieme alla distribuzione 2.9B.

Altri suggerimenti

Il modo più semplice per aggirare il problema è che penso di sfuggire a cirillicoString, ad esempio con escapeXml da Jakarta Commons o convertendo l'intera stringa in entità XML se non è sufficiente. Ma a lungo termine, Alfresco dovrebbe essere risolto, quindi anche l'apertura di un biglietto potrebbe essere una buona scelta.

È un po 'difficile dire se si tratta o meno di un bug con Alfresco, senza vedere i dati che stai cercando di persistere. Quale versione di Alfresco stai usando? Ho trovato questo errore nel sistema di localizzazione dei problemi di Alfresco. In particolare, questo è con la comunità 2.1 e sembra suggerire che ci sono problemi con la codifica diversa da UTF-8, quindi potrebbe essere o meno correlato al tuo problema.

Una cosa che potresti fare per eseguire il debug di questo problema è scrivere un piccolo test usando l'API Java (lato server) incorporata di Alfresco, tentando di mantenere gli stessi dati e vedere se ricevi ancora un errore (probabilmente non lo sarebbe SAXParseException se lo fai). Se non ricevi un errore, sai che probabilmente c'è un bug nell'API del servizio web di Alfresco (che purtroppo non è supportato quasi quanto le loro API Java o REST incorporate) e potresti voler aggiungere un commento su la segnalazione di bug che ho citato in precedenza, oppure presentare la tua Se ricevi ancora un errore con l'API incorporata, potrebbe essere ancora il tuo codice o il loro a essere il problema.

Spero che sia stato almeno un po 'utile!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top