2008-10-10 7 views
2

저는 Alfresco 컨텐츠 서버에 컨텐츠를 가져 오기 위해 Java 웹 서비스 API를 통해 Java를 사용하고 있습니다. 내용의 NamedValue 속성은 UTF-8 (키릴 문자) 문자열로 설정해야합니다.Java, Alfresco 웹 서비스 API 및 유니 코드 NamedValues ​​

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

사람이이 문제를 해결하는 방법을 알고 있나요 :

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

코드는 다음과 같은 : 나는 SAX 파서 예외가 계속?

답변

2

내가 사용했던 alfresco-web-service-client.jar 라이브러리는 2.9B 배포본 (2.9B 커뮤니티 컨텐츠 서버를 친다)과 의존성 라이브러리 인 bcprov-jdk15-136.jar와 xmlsec-1.4 .0.jar는 적합하지 않았습니다 (2.1 dist에서 오래된 상태 임). 나는 bcprov-jdk15-137.jar와 xmlsec-1.4.1.jar를 사용하여 2.9B 배포본과 함께 배포해야한다.

0

가장 쉬운 방법은 cyrillicString을 이스케이프 처리하는 것입니다. 예를 들어 자카르타 커먼즈의 escapeXml을 사용하거나 전체 문자열을 XML 엔터티로 변환하여 충분하지 않은 것으로 생각합니다. 그러나 장기적으로 Alfresco가 고쳐 져야하므로 티켓을 여는 것도 좋은 선택이 될 수 있습니다.

0

계속 유지하려고하는 데이터를 보지 않고 Alfresco의 버그인지 여부를 알기가 약간 어렵습니다. 어떤 Alfresco 버전을 사용하고 있습니까? Alfresco의 이슈 추적 시스템에서이 버그를 발견했습니다. 특히 이것은 2.1 커뮤니티에서 발생하며 UTF-8 이외의 인코딩 문제가 있음을 암시하는 것으로 보입니다. 따라서 문제와 관련이있을 수도 있고 아닐 수도 있습니다.

이 문제를 디버그하기 위해 할 수있는 한 가지는 Alfresco의 내장 Java (서버 측) API를 사용하여 동일한 데이터를 유지하려고 시도하고 오류가 계속 발생하는지 확인하는 것입니다 (아마도 SAXParseException 인 경우). 오류가 발생하지 않으면 Alfresco의 웹 서비스 API에 버그가 있다는 것을 알고 있습니다 (불행히도 내장 자바 또는 REST API만큼 지원되지 않습니다). 앞에서 언급 한 버그 보고서 나 직접 작성하십시오. 아직 임베디드 API에 오류가 발생하더라도 여전히 문제가 될 수 있습니다.

적어도 조금 도움이 되었길 바랍니다.