首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Jax-Rs + Jersey @Post of deeply objects抛出内部服务器错误

我正在尝试使用Postman发布一个json,但得到了内部服务器错误。我认为问题出在解析json的时候,因为在发布的时候,我传递了一个对象,这个对象的变量也是嵌套的。

订单类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Order {

        private long order_id;
        private long user_id;
        private List<OrderDetails> items;
        private Date order_date;
        private Double total;
        private String status;
        ......
}

OrderDetails类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class OrderDetails {

    private Product product;
    private Integer quantity;
    ......
}

产品类别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Product {

    private long prodId;
    private String prodName;
    private String prodDesc;
    private float price;
    .......
}

OrderResource类:我想它甚至没有调用这个方法,因为当我将数据作为字符串传递并将参数更改为字符串时,它会进入调用内部并在控制台上显示它。但当我再次将其更改为Order时,它将抛出一个MessageBodyWriter not found for media type=application/json, type=class java.util.HashMap, genericType=class java.util.HashMap.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@POST
    public Response insertorder(Order order, @Context UriInfo uriInfo) throws ApplicationException {
            if (!order.isValid()) {
            throw new ApplicationException("Order is invalid!");
        }

            System.out.println("Order details in Resource: "+order.getUser_id());

        Order response = new OrderDAO().InsertOrder(order);
        String newId = String.valueOf(response.getOrder_id());
        URI url = uriInfo.getAbsolutePathBuilder().path(newId).build();

        return Response.created(url)
                    .status(Status.CREATED)
                    .entity(response)
                    .build();
    }

OrderDAO类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public Order InsertOrder(Order order) 
{
    Connection connection = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    connection = connect();
    double total=0;
    for(OrderDetails od: order.getItems()) {
        total += od.getProduct().getPrice() * od.getQuantity();
    }

    Order ret = null;

    try {
        pstmt = connection.prepareStatement("INSERT INTO main.orders_table(\n" + 
                "            user_id, order_date, total,status)\n" + 
                "    VALUES (?, ?, ?)",Statement.RETURN_GENERATED_KEYS);    
        pstmt.setLong(1, order.getUser_id());
        pstmt.setDate(2, (Date) order.getOrder_date());
        pstmt.setDouble(3,total);
        pstmt.setString(4,"pending");

        int affectedRows = pstmt.executeUpdate();

        if (affectedRows == 0) {
            throw new SQLException("Creating user failed, no rows affected.");
        }

        try (ResultSet generatedKeys = pstmt.getGeneratedKeys()) {
            if (generatedKeys.next()) {
                System.out.println("Inserted Order Id: "+generatedKeys.getLong(1));
                order.setOrder_id(generatedKeys.getLong(1)); //setting the Order ID to the inserted row Id
            }
            else {
                throw new SQLException("Creating user failed, no ID obtained.");
            }
        }

        ret = new Order(order.getOrder_id(),order.getUser_id(),order.getOrder_date(),order.getTotal(),order.getStatus());
    } 
    catch (Exception e) 
        {
            System.out.println("Error while inserting Order:" + e);
            e.printStackTrace();

        } finally {
            close(connection, pstmt, rs);
        }
    return ret;
}

通过Postman传递的Json字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
        "items": [
            {
                "product": {
                    "price": 2,
                    "prodDesc": "Pakistani Orange",
                    "prodId": 1002,
                    "prodName": "ORANGE"
                },
                "quantity": 5
            },
            {
                "product": {
                    "price": 3,
                    "prodDesc": "Kashmir Apple",
                    "prodId": 1001,
                    "prodName": "APPLE"
                },
                "quantity": 5
            }
        ],
        "order_date": "2008-07-06T00:00:00+08:00",
        "user_id": 2
    }

有人能帮我解决这个问题吗?提亚

EN

回答 1

Stack Overflow用户

发布于 2017-07-03 19:04:47

由于您使用的是Response、Order等类,因此需要提到@consumes和@produces。尝试使用Put方法,尽管Post在这里仍然有效。

另外,正确配置postman,提到Content-Type,分别接受为application/json。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response insertorder(Order order, @Context UriInfo uriInfo) throws ApplicationException {
        if (!order.isValid()) {
        throw new ApplicationException("Order is invalid!");
    }
..
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44888443

复制
相关文章
JQuery Ajax Post导致500内部服务器错误
$.ajaxSetup({data:{csrfmiddlewaretoken:'{{csrf_token}}'}});
用户4645133
2019/02/15
4.5K0
PHP 报500 内部错误不抛出错误信息
访问其余文件能正常访问,只是在某个分组下事出现了500错误,主要是没抛出具体的错误信息。
槽痞
2020/06/23
1.9K0
Spring Boot与JAX-RS框架Jersey的完美搭配
Jeresy是一个轻量级的JAX-RS框架 添加Jeresy 2.x的依赖 compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.26' compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: '2.26' compile group: 'org.glassfish.j
白石
2019/08/23
2.8K0
SpringBootWeb容器配置:JAX-RS和Jersey框架、内嵌容器的配置
Web应用开发是企业开发的重要领域,Spring Boot 1.X的Web容器管理方式基于Servlet容器技术栈。Servlet容器主要基于同步阻塞I/O架构,HTTP请求和线程是一对一的关系,主要是TPR模型,即一个请求对应一个线程。主要的业务逻辑也是基于命令式的编程模式。以Spring MVC框架为主,Web容器方面以Tomcat为主,也可以通过自动配置功能改为Jetty/UnderTow容器。
愿天堂没有BUG
2022/10/28
8260
SpringBootWeb容器配置:JAX-RS和Jersey框架、内嵌容器的配置
post multipart data boundary问题 使用curl 向jersey post文件
原以为curl 模拟post file跟post string类似,-d参数一加 ,header一加就完了,这次遇到个问题,却怎么都搞不定。 curl模拟post提交 与客户端定的协议是: Header Content-Type: multipart/form-data; Body Content-Disposition: form-data; name="file"; filename="xx.jpg" Content-Type: image/jpeg  使用cu
架构师刀哥
2018/03/20
2.7K0
SpringBoot系列之基于Jersey实现文件上传API
在IDEA里new一个project,这里使用Spring Initializer快速创建一个SpringBoot项目,Server url可以使用Spring官网的,也可以使用阿里的,然后点击Next
SmileNicky
2023/08/14
6420
SpringBoot系列之基于Jersey实现文件上传API
500-内部服务器错误_显示内部服务器错误怎么办
HTTP500内部服务器错误”解决方法 – 苦涩的茶 – 博客园HTTP500内部服务器错误的提示,无法法查看错误的详细信息,用户也没办法根据具体的问题来解决,这对很多新用户确实是一件很麻烦的事情,遇来源:www.mingqicha.com
全栈程序员站长
2022/09/22
3.8K0
jersey之get,put,post,delete简单使用
  要使用jersey首先要有相应的依赖包,获取方法有很多,本地下载依赖文件或maven获取,这里假设你的环境已经搭建好了。要使用jersey首先要初始化一个client客户端,下面是最简单的一个get请求
用户2038589
2018/09/06
8100
内部服务器错误是什么意思?内部服务器错误怎么办?
对于网站建设者而言,服务器是一类令他们感到熟悉的事物,服务器具有运行速度快、节省能耗等优点,建设网站离不开租用服务器的环节,有时候出于特殊原因,服务器运行会出现错误或者不正常的情况。内部服务器错误是什么意思?如何解决?
用户8715145
2021/09/10
19K0
内部服务器500错误原因解决方法_什么是内部服务器错误
大家好,又见面了,我是你们的朋友全栈君。 http 500内部服务器错误的解决方法 这个错误整整浪费了我下午的时间,在网上有很多的方法,当然我也是从那些繁多的方法中一点点的搞定IIS的,首先你要先装好IIS,XP SP2中的应该是5.1版本的,安装方法: 1->打开控制面板,选择添加删除程序 2->选择添加删除组件,选择Internet信息服务,也就是IIS 3->点击下一步安装就好了 安装好之后也许你的机子会正常的显示http://localhost/的页面,但很遗憾我的无法正常显示,而且是显示HTTP 500 内部服务器错误,当然我相信肯定有很多人遇到这种情况,搜索一下就知道有多少了。 解决方法: 首先我们要在Internet Explore中选择工具->Internet选项->高级->显示友好的HTTP错误信息,把这一项前面的对钩取消。 这样刷新一下http://localhost/这个页面就会显示出详细的出错信息,有可能会有其他原因,现在只说我遇到的,也是大多数人遇到的错误原因,也就是下面的错误: Server Application Error The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance. 至于出错的具体原因,在这里就不多说了,我们只谈论解决的办法,如果你有兴趣去弄明白其原因,你可以参阅网上的其他资料。 解决方案: 1->右击我的电脑->管理->本地用户和组->用户,给IUSR_机器名和IWAM_机器名两个用户设置密码,要一样 2->开始->运行->输入cmd进入控制台 3->在控制台下输入cd c:/Inetpub/AdminScripts 4->输入cscript.exe adsutil.vbs set w3svc/wamuserpass 你的密码 5->输入cscript.exe adsutil.vbs set w3svc/anonymoususerpass 你的密码 注意这时候控制台不要关闭 刷新http://localhost/如果正常显示出两个页面,说明正常,下面的就可以不去做,如果不行就请继续 6->继续在控制台下输入cscript.exe synciwam.vbs -v 7->如果这时候出现8004e00f错误的话跳过步骤8,直接执行步骤9 8->输入iisreset,重启IIS,刷新http://localhost/,正常 9->开始->运行->输入dcomcnfg->进入组件服务->点击右边的组件服务->计算机->我的电脑->COM+应用程序 报错”COM+ 无法与 Microsoft 分布式事务协调程序交谈”,无法查看里面的对象 10->进入事件查看器,发现msdtc服务没有正常启动。 11->开始->运行->输入regedit进入注册表(下面删除的几项最好先导出一下) 12->找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MSDTC删除 13->找到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSDTC删除 14->找到HKEY_CLASSES_ROOT/CID删除 15->在控制台下继续输入net stop msdtc停止MSDTC服务 16->输入msdtc -uninstall卸载MSDTC服务 17->输入msdtc -install重新安装MSDTC服务 18->确认在事件查看器中msdtc服务已经正常启动 19->如果没有正常工作,请重新执行第17步骤,多执行几次,这样我们可以看到COM+应用程序可以访问,如果不能重启电脑看下,IIS也应该能正常工作,刷新http://localhost/,刷新页面看下是否成功,如果还是不成功的话,就把IIS重新安装一下。 20->问题解决。
全栈程序员站长
2022/09/22
3.6K0
JavaEE的RESTful标准技术JAX-RS,jersey-client客户端使用介绍【享学Java】
在Spring大行其道的今天,很多人对Java的RESTful规范JAX-RS可能比较陌生甚至未曾听闻,当然这也是能被“理解”的,毕竟Spring似乎现在已是JavaEE的事实标准。
YourBatman
2020/03/18
6.2K0
显示http500内部服务器错误,http500内部服务器错误,小编教你HTTP 500 内部服务器错误怎么解决…
在使用电脑的时候,出现问题是我们最不想碰到的事情了。当打开网站的时候碰到“HTTP500内部服务器错误”,这会让我们非常的心烦,有时候就是因为这些故障要折腾很久,很闹心的,下面,小编给大家带来了HTTP 500 内部服务器错误的解决图文。
全栈程序员站长
2022/09/21
6.7K0
显示http500内部服务器错误,http500内部服务器错误,小编教你HTTP 500 内部服务器错误怎么解决…
Jersey快速入门案例
Eclipse Jersey 是一个 REST 框架,提供了 JAX-RS (JSR-370) 的实现。
青山师
2023/05/05
5930
java jersey使用总结_Java Jersey2使用总结
在短信平台一期工作中,为便于移动平台的开发,使用了Java Jersey框架开发RESTFul风格的Web Service接口。在使用的过程中发现了一些问题并积累了一些项目经验,做了一下总结,便于个人成长,同时也希望对有需要的同仁有好的借鉴和帮助。
全栈程序员站长
2022/09/14
1.3K0
从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta
最近在编译蚂蚁金服的sofa-registry,因为不可名状的原因,无法完全下载依赖的maven包,所以只能手动一个一个下载。事实证明,这是一个痛苦的过程,因为各种java包环环相扣,于是一个个java相关概念跃入眼帘。索性把这些概念一一梳理下,与大家分享。
罗西的思考
2020/09/22
2.7K0
内部服务器错误怎么办
第一种:网络状况差。一般如果网络不好,就会显示服务器错误,用户可以等一段时间再尝试登录或者换个网络状态好的地方登录。
Kami米雅
2021/11/25
6.9K0
java轻量RESTful api服务搭建(jersey+jetty)
由于开始要搭建一个java + python的服务,java端提供数据库增删改查逻辑供python端调用,第一时间想到了用REST(Representational State Transfer)进行交互
vell001
2018/08/09
3.1K0
java轻量RESTful api服务搭建(jersey+jetty)
Jersey 2.x 基于 Servlet 的服务器端应用
下面的依赖通常应用到应用服务器上(servlet 容器),同时这个应用服务器上没有整合任何 JAX-RS 的实现。
HoneyMoose
2019/01/30
4270
HTTP状态500-内部服务器错误[通俗易懂]
SSM整合时出现的问题 起初关注点一直在Mapper.xml上,CSDN查询解决方法大致在这样几种。 1.SQL语句问题 2.resultType返回类型问题(List集合中的参数类型) 3.database.properties数据库配置文件问题(Mysql8以上加时区,文件多写了空格,少写了jdbc.)
全栈程序员站长
2022/09/22
5.9K0
HTTP状态500-内部服务器错误[通俗易懂]
点击加载更多

相似问题

Ajax POST抛出500 (内部服务器错误)

121

Jersey/JAX-RS客户端抛出400个错误请求

23

JAX-RS Jersey Junit错误

10

Jersey Jax-RS出现内存错误

10

使用Spring @POST方法的Jax-rs (jersey2) - 400错误

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文