Jersey使用中遇到的问题
来源:互联网 发布:液晶电视机编程器 编辑:程序博客网 时间:2024/05/21 06:20
Jersey RESTful 框架是开源的RESTful框架, 实现了 JAX-RS 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。这里主要记录下在使用jersey开发中遇到的问题及解决方案,供大家参考。
报错信息:The ResourceConfig instance does not contain any root resource classes。
原因:web.xml配置有问题,下图红框中要配置服务端的包路径上传文件
Jersey上传文件需要jersey-multipart-1.19.1.jar这个包,有时也需要mimepull.jar这个包,例如下面这个例子:
@POST @Path("/upload") @Consumes(MediaType.MULTIPART_FORM_DATA) public String fileUpload(@FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition disposition) throws IOException { String imageName = Calendar.getInstance().getTimeInMillis() + disposition.getFileName(); // System.out.println(name); File file = new File(ARTICLE_IMAGES_PATH + imageName); //使用common io的文件写入操作 try { OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = fileInputStream.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); fileInputStream.close(); } catch (Exception e) { e.printStackTrace(); } //原来自己的文件写入操作 //saveFile(fileInputStream, file); return "images/" + imageName; }
可能会出现如下错误:
解决方案:
(1)在application注册MultiPartFeature类
(2) 在web.xml文件中添加如下代码
<servlet> <servlet-name>Jersey-Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.css.sword.restful</param-value> </init-param> <init-param> <param-name>jersey.config.server.provider.classnames</param-name> <param-value>org.glassfish.jersey.filter.LoggingFilter;org.glassfish.jersey.media.multipart.MultiPartFeature</param-value></init-param>
替换了2.23的包出现了如下的错误:
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.server.internal.inject.AbstractHttpContextValueFactory
这个问题折腾了我好几天,最后找到主要的问题在jersey-media-multipart-2.0.jar 这个包上。
这个包主要来辅助文件上传的,不引用这个包如果只是简单的表单及请求操作,程序可以正常启动,如果想做文件上传需引用这个包,问题就出现了,后来看这个包的源码发现它的确需要AbstractHttpContextValueFactory
而2.23版本中没有这个版本,经过几天的研究,找到问题jersey2.1以上都去掉了这个类,可能jersey-media-multipart-2.0.jar(此外还试了jersey-media-multipart-2.2.jar这个包,也是一样的问题)没有及时更新,将jersey版本换成2.0,问题解决
- Jersey使用中遇到的问题
- JERSEY学习遇到的问题
- Jersey中ContainerRequestFilter的使用
- 一个关于在vertx中使用jersey框架接收text/xml类型的问题
- scrollview 中使用中遇到的问题
- jersey的使用总结
- jersey的使用总结
- Jersey 的使用详解
- php使用中遇到的问题
- log4net使用中遇到的一些问题
- JSTL中EL使用遇到的问题
- petshop使用中遇到的两个问题
- eclipse使用中遇到的小问题
- 360浏览器使用中遇到的问题
- struts2 中使用 servlet遇到的问题
- swfupload使用中遇到的问题
- cuteFTP使用中遇到的两个问题
- fread使用中遇到的问题
- greenDao orm 进阶 <二>
- 运行时间为对数的经典三例子
- PAT-B1035. 插入与归并
- ajax从页面向action传递json 公司--》
- 【tensorflow1.0学习笔记006】save-restore保存与读取
- Jersey使用中遇到的问题
- Firefox火狐浏览器无法调试
- mysql5.7.17安装+mysql error:1524+1045+外部访问出错
- 文章标题
- 支付宝pc端支付接入PHP端
- 【LeetCode】461. Hamming Distance
- Category支持添加成员变量
- leetcode_middle_58_78. Subsets
- 都是stm32的JTAG引脚惹的祸