파일 저장소가있는 웹 응용 프로그램이 있습니다. 이 웹 응용 프로그램은 클라이언트가 저장소를 검색하고 SOAP를 통해 첨부 파일을 다운로드 할 수있는 웹 서비스를 제공합니다.Java에서 웹 서비스를 통해 대용량 파일 다운로드
현재 MTOL과 함께 Spring-WS 1.5.8을 사용하여 클라이언트에 첨부 파일을 보내려고했지만 메모리 오류가 계속 발생합니다. 내 서버에 8GB의 메모리가 있고 Tomcat에서 4GB를 사용하도록 구성했기 때문에 이러한 오류가 Tomcat 6 인스턴스와 관련이 있다고 생각하지 않습니다. 200MB 크기의 파일에 이러한 오류가 발생합니다.
SOAP을 사용해야합니다. 아마 최선의 방법은 아닙니다. 나는 봄에 해결책을 선호 하겠지만, 가능하지 않다면 다른 생각을 할 수있다. AxiomSoapMessageFactory를 사용하여 업로드 목적으로 서버에 파일을 스트리밍 할 수 있지만 다른 방법은 사용할 수 없다는 것을 읽었습니다. 사실입니까? 자바
java.lang.OutOfMemoryError: Java heap space
com.sun.xml.internal.messaging.saaj.util.ByteOutputStream.ensureCapacity(Unknown Source)
com.sun.xml.internal.messaging.saaj.util.ByteOutputStream.write(Unknown Source)
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.BMMimeMultipart.find(Unknown Source)
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.BMMimeMultipart.readBody(Unknown Source)
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.BMMimeMultipart.getNextPart(Unknown Source)
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.BMMimeMultipart.parse(Unknown Source)
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.BMMimeMultipart.parse(Unknown Source)
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart.getCount(Unknown Source)
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.initializeAllAttachments(Unknown Source)
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getAttachments(Unknown Source)
org.springframework.ws.soap.saaj.Saaj13Implementation.getAttachment(Saaj13Implementation.java:305)
org.springframework.ws.soap.saaj.SaajSoapMessage.getAttachment(SaajSoapMessage.java:226)
org.springframework.ws.support.MarshallingUtils$MimeMessageContainer.getAttachment(MarshallingUtils.java:109)
org.springframework.oxm.jaxb.Jaxb2Marshaller$Jaxb2AttachmentUnmarshaller.getAttachmentAsDataHandler(Jaxb2Marshaller.java:532)
com.sun.xml.internal.bind.v2.runtime.unmarshaller.MTOMDecorator.startElement(Unknown Source)
com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(Unknown Source)
com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(Unknown Source)
com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(Unknown Source)
com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unknown Source)
com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unknown Source)
javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
org.springframework.oxm.jaxb.Jaxb2Marshaller.unmarshal(Jaxb2Marshaller.java:421)
org.springframework.ws.support.MarshallingUtils.unmarshal(MarshallingUtils.java:62)
org.springframework.ws.client.core.WebServiceTemplate$3.extractData(WebServiceTemplate.java:374)
org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:560)
코드를 게시 할 수 있습니까? 귀하의 시간 초과는 어떻게 설정됩니까? –
OutOfMemoryErros는 * 어디에서나 * 표시되지만 메모리 포옹이 실제로 필요한 곳에서는 필요하지 않습니다. 메모리 누수가있는 다른 응용 프로그램을 실행중인 경우 체인에서 마지막 응용 프로그램이므로 응용 프로그램이 다운 될 수 있습니다. – mhaller