1

このコードがこのエラーを返すのはなぜですか?

コード:

    @Path("/site/resource/upload")
    @Local
    @Stateless
    public class TreeResourceResourcesUpload extends TreeBaseResources {

    @POST
    @Produces( MediaType.APPLICATION_JSON )
    @Consumes( MediaType.MULTIPART_FORM_DATA )
    public TreeNodeTO uploadResource(@Context HttpServletRequest request) throws IOException, ServletException {
            for (Part part : request.getParts()) {
                System.out.println(part.getName());
            }
            return null;
    }
}

エラー:

Caused by: java.lang.IllegalStateException: PWC4016: Request.getParts is called without multipart configuration.  Either add a @MultipartConfig to the servlet, or a multipart-config element to web.xml

システム: Glassfish 3.1.2.2 および Sun JDK 7

ありがとう!

4

2 に答える 2

2

jersey をサーブレットとして使用している場合は、web.xml でマルチパート パラメータを設定できます。

<servlet>
    <servlet-name>jersey-servlet</servlet-name>
    <servlet-class>
        com.sun.jersey.spi.container.servlet.ServletContainer
    </servlet-class>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
        <multipart-config>
            <location>/tmp</location>
            <max-file-size>20848820</max-file-size>
            <max-request-size>418018841</max-request-size>
            <file-size-threshold>1048576</file-size-threshold>
        </multipart-config>
</servlet>
<servlet-mapping>
    <servlet-name>jersey-servlet</servlet-name>
    <url-pattern>/rs/*</url-pattern>
</servlet-mapping>

しかし、この方法は標準ではないと思います。JAXRS仕様で答えを探していましたが、何もありませんでした。だから私はJAX-RSで.getPartにアクセスできないと思った

于 2013-05-04T08:26:38.417 に答える
1

同様の問題に遭遇したようです。バグhttp://java.net/jira/browse/GLASSFISH-18444のように見えますが、これは 3.1.2.2 で修正されるはずですが、そうではありませんか?

于 2012-08-20T15:16:40.107 に答える