Paul:
Is there any sample project with FormDataMultiPart/MULTIPART_FORM_DATA support that successfully deploys and runs in Glassfish 2.1.1?
I tried deploying the "fileupload" sample app and deployment failed. I got an exception:
WebModule[/fileupload-1.0-SNAPSHOT]StandardWrapper.Throwablejava.lang.NoSuchMethodError: com.sun.jersey.core.reflection.ReflectionHelper.getFromStringStringMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method; at com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderProviders$TypeFromString.getStringReader(StringReaderProviders.java:112) at com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderFactory.getStringReader(StringReaderFactory.java:62) at com.sun.jersey.server.impl.model.parameter.multivalued.MultivaluedParameterExtractorFactory.process(MultivaluedParameterExtractorFactory.java:136) at com.sun.jersey.server.impl.model.parameter.multivalued.MultivaluedParameterExtractorFactory.get(MultivaluedParameterExtractorFactory.java:75) at
com.sun.jersey.server.impl.model.method.dispatch.MultipartFormDispatchProvider$MultipartFormParamInjectable.<init>(MultipartFormDispatchProvider.java:166) at com.sun.jersey.server.impl.model.method.dispatch.MultipartFormDispatchProvider.getInjectables(MultipartFormDispatchProvider.java:276) at com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.processParameters(FormDispatchProvider.java:128) at com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.getInjectableValuesProvider(FormDispatchProvider.java:80) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider.create(AbstractResourceMethodDispatchProvider.java:67) at com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.create(FormDispatchProvider.java:75) at
com.sun.jersey.server.impl.model.method.dispatch.MultipartFormDispatchProvider.create(MultipartFormDispatchProvider.java:108) at com.sun.jersey.server.impl.application.ResourceMethodDispatcherFactory.getDispatcher(ResourceMethodDispatcherFactory.java:72) at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:78) at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:69) at com.sun.jersey.server.impl.model.ResourceClass.processSubResourceMethods(ResourceClass.java:258) at com.sun.jersey.server.impl.model.ResourceClass.<init>(ResourceClass.java:128) at com.sun.jersey.server.impl.application.WebApplicationImpl.newResourceClass(WebApplicationImpl.java:379) at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceClass(WebApplicationImpl.java:352) at
com.sun.jersey.server.impl.application.WebApplicationImpl.processRootResources(WebApplicationImpl.java:842) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:625) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:414) at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:377) at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:242) at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:449) at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:169) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:281) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:442) at
javax.servlet.GenericServlet.init(GenericServlet.java:270) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1100) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1023) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4969) at org.apache.catalina.core.StandardContext.start(StandardContext.java:5376) at com.sun.enterprise.web.WebModule.start(WebModule.java:345) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:986) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:970) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:704) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1649) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1254) at
com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:182) at com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:278) at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:1005) at com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:992) at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:470) at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:182) at com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308) at
com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:231) at com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298) at com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132) at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108) at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966) at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:609) at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:653) at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:773) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:390) at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:373) at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:477) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90) at $Proxy1.invoke(Unknown Source) at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304) at com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:170) at com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplication(DeploymentClientUtils.java:159) at com.sun.enterprise.deployment.client.DeployAction.run(DeployAction.java:538) at java.lang.Thread.run(Thread.java:619)WebModule[/fileupload-1.0-SNAPSHOT]PWC1396: Servlet /fileupload-1.0-SNAPSHOT threw load() exceptionjava.lang.NoSuchMethodError:
com.sun.jersey.core.reflection.ReflectionHelper.getFromStringStringMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method; at com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderProviders$TypeFromString.getStringReader(StringReaderProviders.java:112) at com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderFactory.getStringReader(StringReaderFactory.java:62) at com.sun.jersey.server.impl.model.parameter.multivalued.MultivaluedParameterExtractorFactory.process(MultivaluedParameterExtractorFactory.java:136) at com.sun.jersey.server.impl.model.parameter.multivalued.MultivaluedParameterExtractorFactory.get(MultivaluedParameterExtractorFactory.java:75) at com.sun.jersey.server.impl.model.method.dispatch.MultipartFormDispatchProvider$MultipartFormParamInjectable.<init>(MultipartFormDispatchProvider.java:166) at
com.sun.jersey.server.impl.model.method.dispatch.MultipartFormDispatchProvider.getInjectables(MultipartFormDispatchProvider.java:276) at com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.processParameters(FormDispatchProvider.java:128) at com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.getInjectableValuesProvider(FormDispatchProvider.java:80) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider.create(AbstractResourceMethodDispatchProvider.java:67) at com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.create(FormDispatchProvider.java:75) at com.sun.jersey.server.impl.model.method.dispatch.MultipartFormDispatchProvider.create(MultipartFormDispatchProvider.java:108) at
com.sun.jersey.server.impl.application.ResourceMethodDispatcherFactory.getDispatcher(ResourceMethodDispatcherFactory.java:72) at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:78) at com.sun.jersey.server.impl.model.method.ResourceHttpMethod.<init>(ResourceHttpMethod.java:69) at com.sun.jersey.server.impl.model.ResourceClass.processSubResourceMethods(ResourceClass.java:258) at com.sun.jersey.server.impl.model.ResourceClass.<init>(ResourceClass.java:128) at com.sun.jersey.server.impl.application.WebApplicationImpl.newResourceClass(WebApplicationImpl.java:379) at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceClass(WebApplicationImpl.java:352) at com.sun.jersey.server.impl.application.WebApplicationImpl.processRootResources(WebApplicationImpl.java:842) at
com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:625) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:414) at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:377) at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:242) at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:449) at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:169) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:281) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:442) at javax.servlet.GenericServlet.init(GenericServlet.java:270) at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1100) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1023) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4969) at org.apache.catalina.core.StandardContext.start(StandardContext.java:5376) at com.sun.enterprise.web.WebModule.start(WebModule.java:345) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:986) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:970) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:704) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1649) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1254) at
com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:182) at com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:278) at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:1005) at com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:992) at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:470) at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:182) at com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308) at
com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:231) at com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298) at com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132) at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108) at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966) at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:609) at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:653) at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:773) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:390) at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:373) at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:477) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90) at $Proxy1.invoke(Unknown Source) at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304) at com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:170) at com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplication(DeploymentClientUtils.java:159) at com.sun.enterprise.deployment.client.DeployAction.run(DeployAction.java:538) at java.lang.Thread.run(Thread.java:619)ContainerBase.addChild: start: LifecycleException: java.lang.NoSuchMethodError: com.sun.jersey.core.reflection.ReflectionHelper.getFromStringStringMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method;
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4979) at org.apache.catalina.core.StandardContext.start(StandardContext.java:5376) at com.sun.enterprise.web.WebModule.start(WebModule.java:345) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:986) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:970) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:704) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1649) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1254) at com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:182) at com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:278) at
com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:1005) at com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:992) at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:470) at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:182) at com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308) at com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:231) at com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298) at
com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132) at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108) at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966) at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:609) at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:653) at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:773) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at
java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:390) at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:373) at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:477) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90) at $Proxy1.invoke(Unknown Source) at
com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304) at com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:170) at com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplication(DeploymentClientUtils.java:159) at com.sun.enterprise.deployment.client.DeployAction.run(DeployAction.java:538) at java.lang.Thread.run(Thread.java:619)classLoader = WebappClassLoader delegate: true repositories:
--- On Mon, 3/22/10, Suresh Kumar <yesbkay_at_yahoo.com> wrote:
From: Suresh Kumar <yesbkay_at_yahoo.com>
Subject: Re: [Jersey] RE: MULTIPART_FORM_DATA and error 415
To: users_at_jersey.dev.java.net
Date: Monday, March 22, 2010, 4:04 PM
I forgot to mention, by setting <class-loader delegate="false"/>, I was unable to deploy the war.
I am extending an existing web service and have little room to maneuver.
Thanks,Suresh
--- On Mon, 3/22/10, Suresh Kumar <yesbkay_at_yahoo.com> wrote:
From: Suresh Kumar <yesbkay_at_yahoo.com>
Subject: [Jersey]
RE: MULTIPART_FORM_DATA and error 415
To: users_at_jersey.dev.java.net
Date: Monday, March 22, 2010, 2:41 PM
Paul:Thanks for your mail. I did not resolve the previous issue,but I moved on to use "FormDataMultiPart" instead of Form.Here is the relevant portion of the pom.xml <dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
My class loader delegate is set to true :
<class-loader delegate="true"/>
The problem still persists.
Suresh
Hi Suresh,
I presume you resolved your issue you sent in a previous email? GF
v2.1.1 comes pre-installed with Jersey 1.0.3.1 and this causes a
conflict if a later version of Jersey is included in the war. So one
needs to either set class loader delegation to false or upgrade using
the update center.
Have you included the jersey multipart dependency? Note that Jersey
1.1.4 installed on GFv2.1.1 via the update center does not come with
jersey-multipart support so you need to include that yourself in the
war.
Paul.
On Mar 22, 2010, at 6:51 AM, Suresh Kumar wrote:
> This is my environment:
>
> Jersey: 1.1.4
> Glassfish: V2.1.1
> JDK : 1.0.6_18
>
> I am getting a "A message body reader for Java type, class
> com.sun.jersey.multipart.FormDataMultiPart, and MIME media type,
> multipart/form-data;boundary=Boundary_1_2943240_1269235622354, was
> not found" message and a
> 415.
>
> Should I implement a reader?
>
> Any pointers would be really appreciated. I have attached the client
> code, server code and Jersey output.
>
> Thanks,
> Suresh
>
>
> Client Code:
>
> private static void postImageAgain() throws Exception {
> String url = "
http://localhost:8080/image";
> WebResource webResource = client.resource(url);
> File file = new File("src/main/resources/rest/collapse.gif");
> InputStream inputStream = new FileInputStream(file);
> FormDataMultiPart fdmp = new FormDataMultiPart();
> FormDataBodyPart fdp = new FormDataBodyPart("media", file,
> MediaType.MULTIPART_FORM_DATA_TYPE);
> fdmp.bodyPart(fdp);
>
> ClientResponse response =
>
> webResource
> .type(MediaType.MULTIPART_FORM_DATA_TYPE).post(ClientResponse.class,
> fdmp);
> System.out.println("POST New Campaign Response Status : " +
> response.getStatus());
> System.out.println("POST New Campaign Response Content
> Type : " + response.getHeaders().get("Content-Type"));
> String entity = response.getEntity(String.class);
> System.out.println("POST New Campaign Entity : " + entity);
> }
>
> Server Code:
>
> @POST
> @Path("/campaign")
> @Consumes(MediaType.MULTIPART_FORM_DATA)
> @Produces("application/json")
> public Response createCampaign(FormDataMultiPart formData)
> throws IOException {
> FormDataBodyPart imageFormData = formData.getField("media");
> InputStream image =
> imageFormData.getValueAs(InputStream.class);
> FormDataContentDisposition imageFdCD =
> formData
> .getField("media").getValueAs(FormDataContentDisposition.class);
> ByteArrayOutputStream baos = new ByteArrayOutputStream();
> int read = 0;
> byte[] buf = new byte[4096];
> while ((read = image.read(buf)) != -1) {
> baos.write(buf, 0, read);
> }
> String s = new String(baos.toByteArray());
> System.out.println("form-data file name: " +
> imageFdCD.getFileName());
> System.out.println("form-data file contents as string: " + s);
> ResponseBuilder builder = Response.status(Status.OK);
> builder.type(MediaType.APPLICATION_JSON);
> builder.entity("this is great!");
> return builder.build();
>
> Jersey Log:
>
> 7
> *
> In-bound request received
> 7
> >
> POST
>
http://localhost:8080/force-rest-1.0/portal/campaign
> 7
> >
> content-length
> :
> 249
> 7
> >
> connection
> :
> keep-alive
> 7
> >
> host
> :
> localhost:8080
> 7
> >
> user-agent
> :
> Java/1.6.0_18
> 7
> >
> content-type
> :
> multipart/form-data;boundary=Boundary_1_18429817_1269230836954
> 7
> >
> accept
> :
> text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
> 7
> >
> mime-version
> :
> 1.0
> 7
> >
> --Boundary_1_18429817_1269230836954
> Content-Disposition: form-data;name="media"
> Content-Type: multipart/form-data
> GIF89a.................................
> --Boundary_1_18429817_1269230836954--
> A message body reader for Java type, class
> com.sun.jersey.multipart.FormDataMultiPart, and MIME media type,
> multipart/form-data;boundary=Boundary_1_18429817_1269230836954, was
> not found
> 7
> <
> 415
> 7
> <
>