Apache (Apache 및 Tomcat에서 호스팅)를 사용하여 첨부 파일을 가져 오는 saaj를 사용하고 있습니다. - 첨부 파일 (몇 MB) 큰 경우가큰 첨부 파일을 가져올 때 예외가 발생했습니다.
작동
첨부 파일 (몇 KB) 작은 경우 :
는 (메시지가 그 SOAPMessage 객체이다)message.getAttachments();
를 호출하려고 할 때 내가 SOLV 어떻게java.lang.RuntimeException: org.jvnet.mimepull.MIMEParsingException: java.io.IOException: The system cannot find the path specified at com.sun.xml.messaging.saaj.soap.MessageImpl.getAttachments(MessageImpl.java:826) at MyCode.MyServlet.doPost(MyServlet.java:215) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at java.lang.Thread.run(Unknown Source) Caused by: org.jvnet.mimepull.MIMEParsingException: java.io.IOException: The system cannot find the path specified at org.jvnet.mimepull.MemoryData.createNext(MemoryData.java:93) at org.jvnet.mimepull.Chunk.createNext(Chunk.java:59) at org.jvnet.mimepull.DataHead.addBody(DataHead.java:82) at org.jvnet.mimepull.MIMEPart.addBody(MIMEPart.java:192) at org.jvnet.mimepull.MIMEMessage.makeProgress(MIMEMessage.java:235) at org.jvnet.mimepull.MIMEMessage.parseAll(MIMEMessage.java:176) at org.jvnet.mimepull.MIMEMessage.getAttachments(MIMEMessage.java:101) at com.sun.xml.messaging.saaj.packaging.mime.internet.MimePullMultipart.parseAll(MimePullMultipart.java:118) at com.sun.xml.messaging.saaj.packaging.mime.internet.MimePullMultipart.parse(MimePullMultipart.java:129) at com.sun.xml.messaging.saaj.packaging.mime.internet.MimeMultipart.getCount(MimeMultipart.java:199) at com.sun.xml.messaging.saaj.soap.MessageImpl.initializeAllAttachments(MessageImpl.java:1384) at com.sun.xml.messaging.saaj.soap.MessageImpl.getAttachments(MessageImpl.java:824) ... 22 more Caused by: java.io.IOException: The system cannot find the path specified at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createTempFile(Unknown Source) at java.io.File.createTempFile(Unknown Source) at org.jvnet.mimepull.MemoryData.createNext(MemoryData.java:87) ... 33 more
: - 다음과 같은 예외가 발생합니다 이 문제는?
감사합니다.
if (!config.isOnlyMemory() && dataHead.inMemory >= config.memoryThreshold) {
try {
String prefix = config.getTempFilePrefix();
String suffix = config.getTempFileSuffix();
File dir = config.getTempDir();
File tempFile = (dir == null)
? File.createTempFile(prefix, suffix) // here your code crashes
: File.createTempFile(prefix, suffix, dir);
LOGGER.fine("Created temp file = "+tempFile);
dataHead.dataFile = new DataFile(tempFile);
} catch(IOException ioe) {
throw new MIMEParsingException(ioe);
}
그것은 임시 파일을 열려고 시도, 메모리 크기 임계 값이 전달되기 때문에 :
대용량 파일을 찾을 수없는 경우에 따라 파일이 존재하고 올바른 경로를 사용하고 있습니까? – Veger
큰 첨부 파일을 처리하기 위해 구현시 임시 파일을 사용한다고 생각합니다. 나는 그것이 존재하지 않는 위치에 그것을 쓰려고 시도한다고 생각한다. 나는 그것이 어디에 있는지 모른다. 첨부 파일은 그물에서옵니다 (비누 포함) – Matan