0

Glassfish 2.1.1 サーバーで Jersey Multipart 1.13 を使用して war をデプロイすると、その後に次のエラー メッセージが表示されます。

メソッド、public javax.ws.rs.core.Response no.xx.nn.resources.ConverterResources.post(java.lang.String,java.lang.String,java.io.InputStream)、リソースの POST で注釈、クラスoo.xx.nn.resources.ConverterResources は、@HttpMethod で注釈が付けられた有効な Java メソッドとして認識されません。com.sun.jersey.server.impl.model.method.ResourceHttpMethod.(ResourceHttpMethod.java:92) で com.sun.jersey.server.impl.model.method.ResourceHttpMethod.(ResourceHttpMethod.java:69) で com .sun.jersey.server.impl.model.method.ResourceHttpMethod.(ResourceHttpMethod.java:61) at com.sun.jersey.server.impl.model.ResourceClass.processMethods(ResourceClass.java:283) at com.sun. jersey.server.impl.model.ResourceClass.(ResourceClass.java:131)

試行錯誤の結果、これが次のコードに属していることがわかりました。

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response post(@FormDataParam("providerId") int providerId,
                     @FormDataParam("datasetId") int datasetid,
                     @FormDataParam("file") InputStream file)

より具体的には、@FormDataParamパラメーターの注釈です。これらを削除すると、戦争は問題なく展開されます。@DefaultValueすべての@FormDataParamsに追加しようとしましたが、うまくいきませんでした。@Producesまた、私は, また、何の運もなく追加しようとしました。エラーも電流とは何の関係もないようです@Consumes(..)

web.xmlの見た目はかなり標準的です:

<servlet>
    <servlet-name>xxxx</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>oo.xx.nn.resources</param-value>
    </init-param>
    <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>
</servlet>
<servlet-mapping>
    <servlet-name>xxxx</servlet-name>
    <url-pattern>/zzzz/*</url-pattern>
</servlet-mapping>

以下に示すように、必要なすべてのジャージー依存関係を含めました。

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.13</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.13</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey.contribs</groupId>
    <artifactId>jersey-multipart</artifactId>
    <version>1.13</version>
</dependency>

また、IDEA から Tomcat6 および Glassfish 3.1.1 への展開も試みましたが、これは完全に機能します。ローカルとリモートの両方で Java 7 で実行されます (動作しない場合)。何か案は?

4

1 に答える 1

0

わかりました。Glassfish には古い Jersey 依存関係がバンドルされていたため、JVM 引数を指定して、アプリにある程度の余裕を持たせ、独自の依存関係バージョンを提供するよう強制する必要がありました。さらに、sun-web.xml を提供しました。

http://jersey.java.net/nonav/documentation/latest/glassfish.html

于 2013-03-20T19:31:17.107 に答える