Вопрос:

Java, API веб-службы Alfresco и Unicode NamedValues

java web-services unicode alfresco

3423 просмотра

3 ответа

31 Репутация автора

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

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

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

Автор: Aleksandar Marinkovic Источник Размещён: 10.10.2008 08:42

Ответы (3)


0 плюса

1893 Репутация автора

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

Автор: Damien B Размещён: 12.10.2008 11:37

0 плюса

5533 Репутация автора

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

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

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

Автор: Julie Размещён: 13.10.2008 04:13

2 плюса

31 Репутация автора

Решение

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

Автор: Aleksandar Marinkovic Размещён: 13.10.2008 09:18
Вопросы из категории :
32x32