2011-08-01 4 views
0

큰 파일을 받고 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 첨부 파일 및 프로젝트 이름 노드 내용 모두를 추출하는 데 도움이 수

그 목적을 위해 사용하는 코드이다? 내가 읽은 바로는 사전

답변

1

에서

감사 (총 죄송합니다 단지 2 개 링크를 게시 할 수있는) :

그리고에 의해 MTOM 방법의 상세한 정의 :

  • www.crosschecknet.com/intro_to_mtom.php

전송에 최적화 있지만, base64로 당신의 메시지에 첨부 된 데이터는 여전히 비 정렬 화하고 같이 (기본 핸들러 전에 SOAP 메시지에 다시 넣어 것입니다 인코딩 예를 들어, SOAPHandler)가 그 정보를 얻습니다. 이것은이 방법론의 한계로 보인다.

위에서 언급 한 기술을 사용하면 기본 SOAPMessageSOAPHandlers을 사용하는 것에 능통 한 우리와 비교하여 올바른 해결책을 찾을 수 있습니다. AXIOM과 Spring에서 특수 객체 중 일부를 사용한다면이 작업을 수행 할 수 있어야합니다. http://forum.springsource.org/archive/index.php/t-48343.html

감사합니다, KK

: 여기에서 밖으로이 문서를 확인
관련 문제