java - Cannot Upload a file using Jax-RS -
i want use jersey framework. i´m running web service, using ant app, on java ee7. application server glassfish
my method this:
package mypackage.service; ... import org.glassfish.jersey.media.multipart.formdatacontentdisposition; import org.glassfish.jersey.media.multipart.formdataparam; @post @path("createsomething") @consumes(multipart_form_data) @produces(application_xml) public response createsomething(@formdataparam("upload") inputstream is, @formdataparam("upload") formdatacontentdisposition formdata, @queryparam("some") string some, @context httpservletrequest request) { string filelocation = "c:\\uploadfile\\" + formdata.getfilename(); //more things, not matter try { ctrl.savefile(is, filelocation); string result = "successfully file uploaded on path " + filelocation; return response.status(response.status.ok).entity(result).build(); } catch (ioexception e) { e.printstacktrace(); return response.status(response.status.internal_server_error).build(); }
i have application config:
package mypackage.service; import java.util.hashset; import java.util.set; import javax.ws.rs.core.application; import org.glassfish.jersey.media.multipart.multipartfeature; @javax.ws.rs.applicationpath("") public class applicationconfig extends application { @override public set<class<?>> getclasses() { final set<class<?>> resources = new hashset<>(); addrestresourceclasses(resources); resources.add(multipartfeature.class); return resources; } /** * not modify addrestresourceclasses() method. automatically * populated resources defined in project. if required, comment * out calling method in getclasses(). */ private void addrestresourceclasses(set<class<?>> resources) { resources.add(mypackage.service.myservice.class); } }
on myweb.xml have:
<servlet> <servlet-name>servletadaptor</servlet-name> <servlet-class>org.glassfish.jersey.servlet.servletcontainer</servlet-class> <init-param> <param-name>javax.ws.rs.application</param-name> <param-value>mypackage.service.applicationconfig</param-value> </init-param> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>mypackage.service</param-value> </init-param> <init-param> <param-name>jersey.config.server.provider.classnames</param-name> <param-value>org.glassfish.jersey.filter.loggingfilter;org.glassfish.jersey.media.multipart.multipartfeature</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>servletadaptor</servlet-name> <url-pattern>/createsomething/*</url-pattern> </servlet-mapping>
i still same message:
caused by: org.apache.catalina.lifecycleexception: org.glassfish.jersey.server.model.modelvalidationexception: validation of application resource model has failed during application initialization. [[fatal] no injection source found parameter of type public javax.ws.rs.core.response
what i´m doing wrong??
it works fine me. though rid of application subclass. not needed, , may cause conflict/confusion. xml sufficient configuration, rid of javax.ws.rs.application
<init-param>
. making multipart jars compile-time jars (meaning not built war - might conflict glassfish's version). don't work ant, i'm not sure how can that, know it's possible.
Comments
Post a Comment