Я пытаюсь создать службу поддержки, которая загружает файл. Я следовал этапы:Загрузка файла JJEE Jersey - вход всегда null
http://examples.javacodegeeks.com/enterprise-java/rest/jersey/jersey-file-upload-example/
http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/
Но, когда я загрузить файл (например, .pdf), входной FormDataMultiPart всегда NULL, и я не понимаю, почему. Я использую libs «jersey-multipart» и «jersey-core». Мой код:
Restful обслуживание:
@Path("/reservation")
public class ReservationWs {
/** The Constant log. */
private static final Logger LOGGER = LoggerFactory.getLogger(ReservationWs.class.getName());
private static final String SERVER_UPLOAD_LOCATION_FOLDER = "C://opt/share/reservation/";
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
String uploadedFileLocation = SERVER_UPLOAD_LOCATION_FOLDER
+ fileDetail.getFileName();
// save it
saveFile(uploadedInputStream, uploadedFileLocation);
String output = "File uploaded to : " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
@POST
@Path("/upload2")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile2(FormDataMultiPart form) {
FormDataBodyPart filePart = form.getField("file");
ContentDisposition headerOfFilePart = filePart.getContentDisposition();
InputStream fileInputStream = filePart.getValueAs(InputStream.class);
String filePath = SERVER_UPLOAD_LOCATION_FOLDER + headerOfFilePart.getFileName();
// save the file to the server
saveFile(fileInputStream, filePath);
String output = "File saved to server location using FormDataMultiPart : " + filePath;
System.out.println(output);
return Response.status(200).entity(output).build();
}
}
Мой клиент:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Form Page</title>
</head>
<body>
<h1>Upload a File</h1>
<form action="reservation/upload" method="post" enctype="multipart/form-data">
<p>
Select a file : <input type="file" name="file" size="55" />
</p>
<input type="submit" value="Upload It" />
</form>
</body>
</html>
Когда я пытаюсь позвонить в "загрузить", вход нуль и журналы ошибок:
GRAVE: El Servlet.service() para el servlet [rest_1288520529] en el contexto con ruta [/ check] lanzó la excepción [Ошибка выполнения ssing запрос вебсервис] кон саиза Raiz java.lang.NullPointerException на com.checking.reservation.ws.ReservationWs.uploadFile (ReservationWs.java:74) в sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) на солнце. reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:497) при орг .apache.openejb.server.cxf.rs.PojoInvoker.performInvocation (PojoInvoker.java:43) at org.apache.cxf.service.invoker.AbstractInvoker.invoke (AbstractInvoker.java:96) at org.apache. cxf.jaxrs.JAXRSInvoke r.invoke (JAXRSInvoker.java:165) на org.apache.cxf.jaxrs.JAXRSInvoker.invoke (JAXRSInvoker.java:89) на org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke (AutoJAXRSInvoker. Java: 68) в org.apache.cxf.interceptor.ServiceInvokerInterceptor $ 1.run (ServiceInvokerInterceptor.java:57) на org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage (ServiceInvokerInterceptor.java:93) в org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:263) на org.apache.cxf.transport.ChainInitiationObserver.onMessage (ChainInitiationObserver.java:121) на org.apache.cxf.transport. http.Abstr actHTTPDestination.invoke (AbstractHTTPDestination.java:240) на org.apache.openejb.server.cxf.rs.CxfRsHttpListener.onMessage (CxfRsHttpListener.java:187) на org.apache.openejb.server.rest.RsServlet. сервис (RsServlet.java:53) в javax.servlet.http.HttpServlet.service (HttpServlet.java:727) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:303) в орг .apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) на org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) на org.apache.catalina.core .ApplicationFilterChain.int ernalDoFilter (ApplicationFilterChain.java:241) по адресу org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.Java: 208) на net.bull.javamelody.MonitoringFilter.doFilter (MonitoringFilter.java:198) на net.bull.javamelody.MonitoringFilter.doFilter (MonitoringFilter.java:176) на org.apache.catalina .core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) на org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) на org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve .java: 220) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:122) at org.apache.t omee.catalina.OpenEJBValve.invoke (OpenEJBValve.java:44) на org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:501) на org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:171) на org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103) на org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:950) на org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:116) на org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:408) в org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1070) на org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:611) в org.apache.tomcat.util .net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint.java:316) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor .java: 617) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:745)
Когда я пытаюсь позвонить в "upload2", вход нуль и журналы ошибок:
11 сентября 2015 9:12:21 AM org.apache.catalina.core.StandardWrapperValve Invoke GRAVE: El Servlet.service() para el servlet [rest_348842263] ru el contexto con ruta [/ проверка] lanzó la excepción [Обработка ошибок запрос webservice] con causa raíz java.lang.NullPointerException at com.checking.reservation. ws.ReservationWs.uploadFile2 (ReservationWs.java:90) at sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) в sun.reflect.Nat iveMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:497) при org.apache .openejb.server.cxf.rs.PojoInvoker.performInvocation (PojoInvoker.java:43) at org.apache.cxf.service.invoker.AbstractInvoker.invoke (AbstractInvoker.java:96) at org.apache.cxf. jaxrs.JAXRSInvoker.invoke (JAXRSInvoker.java:165) at org.apache.cxf.jaxrs.JAXRSInvoker.invoke (JAXRSInvoker.java:89) в org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke (AutoJAXRSInvoker.java:68) по адресу org.apache.cxf.interceptor.ServiceInvokerInterceptor $ 1.run (ServiceInvokerInterceptor.java:57) на org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage (ServiceInvokerInterceptor.java:93) на org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java : 263) на org.apache.cxf.transport.ChainInitiationObserver.onMessage (ChainInitiationObserver.java:121) на org.apache.cxf.transport.http.AbstractHTTPDestination.invoke (AbstractHTTPDestination.java:240) в org.apache.openejb.server.cxf.rs.CxfRsHttpListener.onMessage (CxfRsHttpListener.java:187) по адресу org.apache.openejb.server.rest.RsServlet.service (RsServlet. Java: 53) в javax.servlet.http.HttpServlet.service (HttpServlet.java:727) при org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:303) на org.apache.catalina .core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) на org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) на org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) на org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) на net.bull.javamelody.MonitoringFilter.doFilter (MonitoringFilter.java:198) на net.bull.javamelody.MonitoringFilter.doFilter (MonitoringFilter.java:176) на org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) на org.apache.catalina. core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) на org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:220) на org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve. java: 122) по адресу org.apache.tomee.catalina.OpenEJBValve.invoke (OpenEJBValve.java:44) по адресу org.apache.catalina.authe nticator.AuthenticatorBase.invoke (AuthenticatorBase.java:501) на org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:171) на org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve. Java: 103) на org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:950) на org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:116) в орг .apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:408) по адресу org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1070) по адресу org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:611) на org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint.java:316) в java.util .concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable .run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:745)
Любая идея?