2008-10-10 1 views
2

Я использую Java для доступа к серверу контента Alfresco через его API веб-сервисов для импорта некоторого контента в него. Содержимое должно иметь некоторые свойства NamedValue, установленные в строку UTF-8 (кириллица). Я получаю парсер исключение Сакс:Java, API веб-сервиса Alfresco и Unicode NamedValues ​​

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

код выглядит примерно так:

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

Кто-нибудь знает, как решить эту проблему?

ответ

2

Проблема была в том, что библиотека alfresco-web-service-client.jar, которую я использовал, принадлежала дистрибутиву 2.9B (я поражаю сервер контента сообщества 2.9B), и библиотеки зависимостей bcprov-jdk15-136.jar и xmlsec-1.4 .0.jar не были адекватными (оставались старыми с 2,1 раз). Я должен был использовать bcprov-jdk15-137.jar и xmlsec-1.4.1.jar, которые развернуты вместе с дистрибутивом 2.9B.

0

Самый простой способ обойти это, я думаю, чтобы избежать cyrillicString, например, с escapeXml из Jakarta Commons, или путем преобразования всей строки в объекты XML, если этого недостаточно. Но в конечном счете, Alfresco должен быть исправлен, поэтому открытие билета может быть хорошим выбором.

0

Немного сложно сказать, является ли это ошибкой с Alfresco, не видя данных, которые вы пытаетесь сохранить. Какую версию Alfresco вы используете? Я нашел эту ошибку в системе отслеживания проблем Alfresco. В частности, это сообщество 2.1, и кажется, что существуют проблемы с кодировкой, отличной от UTF-8, поэтому она может или не может быть связана с вашей проблемой.

. Одна вещь, которую вы могли бы сделать, чтобы отладить эту проблему, - это написать небольшой тест с использованием встроенного API Java (серверной) Alfresco, пытающегося сохранить одни и те же данные и посмотреть, есть ли у вас ошибка (вероятно, если вы это сделаете) SAXParseException. Если вы не получили сообщение об ошибке, вы знаете, что, вероятно, есть ошибка в API веб-сервиса Alfresco (который, к сожалению, почти не поддерживается как встроенные Java или REST API), и вы можете добавить комментарий к отчет об ошибках, о котором я упоминал ранее, или написать свой собственный. Если вы все еще получаете ошибку во встроенном API, то это может быть либо ваш код, либо их проблема.

Надеюсь, что это было хотя бы немного полезно!

Смежные вопросы