【问题标题】:glassfish 4 and jersey-media-multipart 2 don't work with beans.xmlglassfish 4 和 jersey-media-multipart 2 不适用于 beans.xml
【发布时间】:2013-07-11 17:55:32
【问题描述】:

我正在使用 glassfish 4 使用最近发布的标准 Java 7EE 堆栈构建一些宁静的应用程序。

我的基本 restful 服务运行良好,但现在我想处理在同一服务中使用 multipart mime 类型的传入文件上传。

我找到了https://jersey.java.net/documentation/latest/user-guide.html 中提到的 POC jersey maven 示例(multipart-webapp) 这部署和工作正常。 但是,一旦我在此框架上构建以包含依赖项注入,特别是,一旦我创建了 beans.xml 文件(甚至是空文件),我就会收到各种错误,例如:

严重:加载应用程序时出现异常:CDI 部署失败:WELD-001408 在注入点 [[BackedAnnotatedParameter] [BackedAnnotatedConstructor] @Inject public org.glassfish 的限定符 [@Default] 的类型 [Providers] 的依赖关系不满足.jersey.media.multipart.internal.MultiPartReaderServerSide(@Context Providers, Provider)]

我尝试在 beans.xml 文件中使用设置为 all 或 none 的新 bean-discovery-mode 属性,但没有任何区别。 这是 Glassfish 或 Jersey 中的错误,还是它们目前不兼容,即使 Glassfish 包含所有相关的罐子,还是我在做一些非常愚蠢的事情?

【问题讨论】:

    标签: jersey java-ee-7 glassfish-4


    【解决方案1】:

    事实证明,错误消息和 beans.xml 行为是红鲱鱼。为了帮助遇到同样问题的任何人,您需要在 glassfish 上的宁静界面中使用多部分 mime。

    确保仅在编译时添加库。如果您使用 netbeans,这意味着从 glassfish/modules 目录中添加 multipart-mime-xxx.jar 作为库,但取消单击“package”按钮,因此它不包含在 war 包中(因为它已经在 glassfish 中。

    如果您使用的是 maven,则可以通过在依赖项中使用提供的标签来获得相同的结果:

            <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-multipart</artifactId>
            <scope>provided</scope>
            </dependency>
    

    如果您使用 netbeans 生成的 restful 模板作为起点,您将拥有一个名为 application-config.java 的文件,该文件已为您生成。添加行:

        resources.add(MultiPartFeature.class);
    

    直线上方

         addRestResourceClasses(resources);
    

    现在您应该会发现,您可以安全地在 jersey 中为 multipart mime 使用各种注释。

    【讨论】:

    • +1 我今天在尝试运行bookstore-webapp example 时遇到了这个问题。 &lt;scope&gt;provided&lt;/scope&gt; jersey-mvc-jsp 依赖项对我有用。
    • 对不起,我不能给这个答案更多的 +1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2017-09-13
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多