微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

glassfish 4和jersey-media-multipart 2不能与beans.xml一起使用

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

我的基本restful服务工作正常,但现在我想处理在同一服务中使用multipart mime类型的传入文件上传.

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

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

我尝试在我的beans.xml文件中使用新的bean-discovery-mode属性设置为all或none,但它没有任何区别.
这是Glassfish或Jersey中的一个错误,或者它们目前是不兼容的,即使Glassfish包含所有涉及的罐子,还是我做的事情真的很傻?

解决方法

事实证明,错误消息和beans.xml行为是红色的鲱鱼.为了帮助任何有同样问题的人,这就是你需要在glassfish上的一个restful接口中使用multipart 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);

现在你应该发现你可以安全地在球衣中使用各种注释来进行多部分哑剧.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。