当前位置 : 主页 > 网页制作 > xml >

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

来源:互联网 收集:自由互联 发布时间:2021-06-13
我正在使用glassfish 4使用最近发布的标准 Java 7EE堆栈构建一些restful应用程序. 我的基本restful服务工作正常,但现在我想处理在同一服务中使用multipart mime类型的传入文件上传. 我在https:/
我正在使用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);

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

网友评论