No problem, thanks. I think it will help others to have a working example of a File Upload using pure OSGi JAX-RS Whiteboard Specification, all the samples I have found do not go there.
Best regards, Alex soto > On Dec 1, 2020, at 8:43 AM, Jean-Baptiste Onofre <[email protected]> wrote: > > Thanks for the update. > > I’m pretty busy with ActiveMQ, Decanter, Camel and Karaf5 PoC, but I will > take a look tomorrow. > > Regards > JB > >> Le 1 déc. 2020 à 14:29, Alex Soto <[email protected] >> <mailto:[email protected]>> a écrit : >> >> Hi JB, >> >> Yes, Aries JAXRS 1.0.10. >> I suppose it is PAX-WEB, or whatever the default is for Karaf 4.3.0. >> >> The class: >> >> import javax.servlet.ServletException; >> import javax.servlet.annotation.MultipartConfig; >> import javax.servlet.http.HttpServletRequest; >> import javax.servlet.http.Part; >> import javax.ws.rs.Consumes; >> import javax.ws.rs.DELETE; >> import javax.ws.rs.GET; >> import javax.ws.rs.PATCH; >> import javax.ws.rs.POST; >> import javax.ws.rs.Path; >> import javax.ws.rs.PathParam; >> import javax.ws.rs.Produces; >> import javax.ws.rs.core.Context; >> import javax.ws.rs.core.MediaType; >> import javax.ws.rs.core.SecurityContext; >> import javax.ws.rs.core.UriInfo; >> >> @Component(service = FirmwareResource.class, scope = ServiceScope.PROTOTYPE) >> @JaxrsResource >> @Path(ResourceConstants.FIRMWARE_PATH) >> @JaxrsName("firmware") >> @JaxrsApplicationSelect(Constants.JAXRS_APP_SELECT) >> @Produces(Constants.API_MEDIA_TYPE) >> @Protected >> @MultipartConfig >> public class FirmwareResource { >> >> @POST >> @Consumes(MediaType.MULTIPART_FORM_DATA) >> public void upload(@Context HttpServletRequest request) throws >> IOException, ServletException { >> Collection<Part> parts = request.getParts(); >> ... >> >> >> Thank you for taking a look at this. >> >> Best regards, >> Alex soto >> >> >> >> >>> On Dec 1, 2020, at 1:23 AM, Jean-Baptiste Onofre <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>> Hi Alex, >>> >>> In order for me to reproduce, are you using: >>> >>> - Aries JAXRS 1.0.10 still (or did you update) ? >>> - Pax Web or Felix as HTTP service ? >>> - Do you have JEE @MultipartConfig annotation on your JAXRS class ? >>> - @Consumers is set to MediaType.MULTIPART ? >>> >>> It could be necessary to mimic the JAXRS tests by adding a fragment to >>> bring org.apache.cxf.jaxrs.utils.multipart to Aries JAXRS bundle. >>> >>> Regards >>> JB >>> >>>> Le 30 nov. 2020 à 19:19, Alex Soto <[email protected] >>>> <mailto:[email protected]>> a écrit : >>>> >>>> Hello, >>>> >>>> Anybody has any insight about this? >>>> >>>> Best regards, >>>> Alex soto >>>> >>>> >>>> >>>> >>>>> On Nov 13, 2020, at 8:54 AM, Alex Soto <[email protected] >>>>> <mailto:[email protected]>> wrote: >>>>> >>>>> Thank you, João, for your response. >>>>> >>>>> Unfortunately, it is not working for me. I tested adding the annotation, >>>>> and my service look almost identical to yours. >>>>> >>>>> I found this thread https://github.com/osgi/osgi.enroute/issues/65 >>>>> <https://github.com/osgi/osgi.enroute/issues/65> in which Tim Ward >>>>> explains about the need to set >>>>> “osgi.http.whiteboard.servlet.multipart.enabled=true” in the >>>>> configuration PID “org.apache.aries.jax.rs.whiteboard.default” but that >>>>> is not working either. It still fails with exception: >>>>> >>>>> >>>>> java.lang.IllegalStateException: No multipart config for servlet >>>>> at org.eclipse.jetty.server.Request.getParts(Request.java:2378) >>>>> ~[!/:9.4.31.v20200723] >>>>> at org.eclipse.jetty.server.Request.getParts(Request.java:2366) >>>>> ~[!/:9.4.31.v20200723] >>>>> at >>>>> javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:375) >>>>> ~[!/:3.1.0] >>>>> >>>>> >>>>> >>>>> Best regards, >>>>> Alex soto >>>>> >>>>> >>>>> >>>>> >>>>>> On Nov 13, 2020, at 4:30 AM, João Assunção <[email protected] >>>>>> <mailto:[email protected]>> wrote: >>>>>> >>>>>> Hello Alex, >>>>>> >>>>>> I used Multipart with Aries JAX-RS and I'm almost sure I didn't need to >>>>>> mess with the configuration. >>>>>> I annotated the class with @MultipartConfig and placed a >>>>>> @Consumes(MediaType.MULIPART_FOR_DATA). >>>>>> >>>>>> @Path("/firmware") >>>>>> @Component(service = FirmwareService.class, // >>>>>> immediate = true, // >>>>>> scope = ServiceScope.SINGLETON, property = { >>>>>> JaxrsWhiteboardConstants.JAX_RS_RESOURCE + "=true", >>>>>> JaxrsWhiteboardConstants.JAX_RS_APPLICATION_SELECT + "=(" + >>>>>> JaxrsWhiteboardConstants.JAX_RS_NAME + "=myApp)" >>>>>> }) >>>>>> @MultipartConfig >>>>>> public class FirmwareService { >>>>>> .... >>>>>> @POST >>>>>> @Path("/upload") >>>>>> @Consumes(MediaType.MULTIPART_FORM_DATA) >>>>>> public Response uploadFirmware(@Context HttpServletRequest request) { >>>>>> try { >>>>>> doUploadFirmware(request); >>>>>> >>>>>> Hope this helps >>>>>> >>>>>> João Assunção >>>>>> >>>>>> Email: [email protected] <mailto:[email protected]> >>>>>> Mobile: +351 916968984 >>>>>> Phone: +351 211933149 >>>>>> Web: www.exploitsys.com <http://www.exploitsys.com/> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Thu, Nov 12, 2020 at 5:25 PM Alex Soto <[email protected] >>>>>> <mailto:[email protected]>> wrote: >>>>>> With Karaf 4.3.0, using Aries JAX-RS 1.0.10, how can I enable multi >>>>>> part support? >>>>>> >>>>>> I am adding configuration file >>>>>> “org.apache.aries.jax.rs.whiteboard.default.cfg” to the “etc” directory >>>>>> with property: >>>>>> >>>>>> osgi.http.whiteboard.servlet.multipart.enabled=true >>>>>> >>>>>> But I am still getting error: >>>>>> >>>>>> java.lang.IllegalStateException: No multipart config for servlet >>>>>> >>>>>> When getting parts from HttpServletRequest. >>>>>> Any help will be appreciated. >>>>>> >>>>>> Best regards, >>>>>> Alex soto >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >
