큰 파일을 받고 SOAP 메시지에 지정된 이름으로 저장하는 웹 서비스를 작성하려고합니다. 다음은 이미 몇 가지 물건을 구축했습니다 예를 들어 요청 메시지Spring WS 및 Axiom을 사용하여 큰 XOP 첨부 파일이있는 SOAP 메시지에서 데이터를 읽는 방법
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://mywebservice.com.ua/bait/schemas" xmlns:xm="http://www.w3.org/2005/05/xmlmime">
<soapenv:Header/>
<soapenv:Body>
<sch:SubmitProjectFileRequest>
<sch:ProjectName>MyADProject.xml</sch:ProjectName>
<sch:ProjectFile xm:contentType="text/text">cid:710420383131</sch:ProjectFile>
</sch:SubmitProjectFileRequest>
</soapenv:Body>
</soapenv:Envelope>
입니다 : 내가 OutOfMemoryError를하지 않고 큰 XOP 파일을받을 수 있습니다. 문제는 요청의 첨부 파일을 인라인으로 가져 오려고 시도 할 때 요청의 ProjectName 노드에 액세스 할 수 없다는 것입니다. 그리고 그 자체가 여기에 OutOfMemoryError를
에 이르게 것을 나는 현재
@PayloadRoot(localPart = SUBMIT_PROJECT_FILE_REQUEST, namespace = NAMESPACE_URI)
public void handleSubmitProjectFileRequest(SoapMessage message) throws Exception {
String projectName = getProjectName(message.getDocument());
Attachment attachment = message.getAttachments().next();
projectFileService.storeProjectFile(projectName, attachment.getDataHandler());
}
private String getProjectName(Document xml) throws XPathExpressionException {
String prefix = xml.lookupPrefix(NAMESPACE_URI);
NodeList names = xml.getElementsByTagName(String.format("%s:%s", prefix, "ProjectName"));
String projectName = names.item(0).getTextContent();
return projectName;
}
사람이 나에게 봄 WS와 공리를 사용하여 큰 XOP 첨부 파일 및 프로젝트 이름 노드 내용 모두를 추출하는 데 도움이 수
그 목적을 위해 사용하는 코드이다? 내가 읽은 바로는 사전