문제

일부 컨텐츠를 가져 오기 위해 웹 서비스 API를 통해 Alfresco Content Server에 액세스하는 데 Java를 사용하고 있습니다. 컨텐츠에는 일부 이름의 value 속성이 UTF-8 (키릴) 문자열로 설정되어 있어야합니다. Sax Parser Exception을 계속 받고 있습니다.

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

이 문제를 해결하는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

문제는 내가 사용한 Alfresco-Web-Service-Client.jar 라이브러리가 2.9B 배포 (2.9B 커뮤니티 컨텐츠 서버를 치고 있음)와 의존성 LIBS BCPROV-JDK15-136.JAR 및 XMLSEC-1.4.0.jar라는 것입니다. 적절하지 않았다 (2.1 Disp에서 오래 남았다). 2.9B 분포와 함께 배포 된 BCPROV-JDK15-137.jar 및 XMLSEC-1.4.1.jar를 사용해야했습니다.

다른 팁

주변을 돌아 다니는 가장 쉬운 방법은 예를 들어 사이릴 트링을 피하는 것입니다. EscapeXML 자카르타 커먼즈에서 또는 전체 문자열을 충분하지 않은 경우 XML 엔티티로 변환함으로써. 그러나 장기적으로 Alfresco가 고정되어야하므로 티켓을 여는 것도 좋은 선택 일 수 있습니다.

지속하려는 데이터를 보지 않고 이것이 Alfresco의 버그인지 여부를 알기가 조금 어렵습니다. 어떤 버전의 Alfresco를 사용하고 있습니까? Alfresco의 문제 추적 시스템 에서이 버그를 발견했습니다. 구체적으로, 이것은 2.1 커뮤니티와 관련이 있으며, UTF-8 이외의 인코딩에 문제가 있음을 시사하는 것으로 보이므로 문제와 관련이 있거나 관련이 없을 수도 있습니다.

이 문제를 디버깅하기 위해 할 수있는 한 가지는 Alfresco의 임베디드 Java (Server-Side) API를 사용하여 약간의 테스트를 작성하고 동일한 데이터를 지속하려고 시도하고 여전히 오류가 발생하는지 확인하는 것입니다 (아마도 SaxParseException이 아닐 수도 있습니다. 하다). 오류가 발생하지 않으면 Alfresco의 웹 서비스 API에 버그가있을 수 있음을 알고 있습니다 (불행히도 내장 된 Java 또는 REST API만큼 잘 지원되지 않음). 앞에서 언급 한 버그 보고서 또는 자신의 버그 보고서. 임베디드 API에 여전히 오류가 발생하면 여전히 코드 나 문제가 될 수 있습니다.

그것이 적어도 조금 도움이 되었기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top