【id:35】【20分】E. Stack(类与构造)

博客围绕栈类展开,栈是先进后出的线性表。介绍了堆栈类相关信息,如数据存于数组a,size为数组长度,top表示数组下标。说明了push、pop操作及判断栈空、栈满的条件,还给出输入输出测试要求,需完成类中方法实现并测试。

题目描述

上面是栈类的定义,栈是一种具有先进后出特点的线性表,请根据注释,完成类中所有方法的实现,并在主函数中测试之。

堆栈类的说明如下:

1. 堆栈的数据实际上是保存在数组a中,而a开始是一个指针,在初始化时,根据实际需求将a动态创建为数组,数组长度根据构造函数的参数决定。

2.size实际上就是数组的长度,当使用无参构造则size为10,当使用有参构造则size为s、

3.top表示数组下标,也表示数组中下一个存放数据的空白位置。

4.push操作表示堆栈的数组存放一个数据,例如一开始数组为空,则top为0,当有数据要入栈时,把数据存放在a[top]的位置,然后top加1指向下一个空白位置、数据进栈只能从栈顶进。

5.pop操作表示一个数据要出栈,数据出栈只能从栈顶出,先把top减1指向栈顶数据,然后把数据返回。

6.判断堆栈空的条件是top是否等于0,判断堆栈满的条件是top是否等于size

输入

测试数据的组数 t

第一个栈的大小

第一个栈的元素列表,将该列表的元素依次进栈

..........

输出

将栈元素依次出栈

样例查看模式

正常显示查看格式

输入样例1 <-复制

输出样例1

#include<iostream>
using namespace std;
class CStack
{
public:
    CStack();
    CStack(int s);
    int get(int index);
    void push(int n);
    int isempty();
    int isfull();
    int pop();
    ~CStack();
private:
    int* a;
    int size;
    int top;//表示数组下表
};
CStack::CStack()
{
    size = 10;
    top = 0;
    a = new int[10];
    cout << "Constructor." << endl;
}
CStack::CStack(int s)
{
    size = s;
    top = 0;
    a = new int[s];
    cout << "Constructor." << endl;
}
CStack::~CStack()
{
    delete[]a;
    cout << "Destructor." << endl;
}
int CStack::get(int index)
{
    return *(a + index);
}
void CStack::push(int n)
{
    a[top] = n;
    top++;
}
int CStack::isempty()
{
    if (top == 0)
    {
        return 0;//表示空
    }
}
int CStack::isfull()
{
    if (top == size)
    {
        return 1;
    }
}
int CStack::pop()
{
    return a[--top];
}
int main()
{
    int i, t, size1, j, m;
    cin >> t;
    for (i = 0; i < t; i++)
    {
        cin >> size1;
        CStack CStack1(size1);
        for (j = 0; j < size1; j++)
        {
            cin >> m;
            CStack1.push(m);
        }
        for (j = 0; j < size1 - 1; j++)
            {
                cout << CStack1.pop() << " ";
            }
            cout << CStack1.pop() << endl;
    }
    return 0;
}
例外情况 org.apache.jasper.JasperException: 在 [36] 行处理 [/jsp/admin/login.jsp] 时发生异常 33: </script> 34: </head> 35: <body> 36: <jsp:useBean id="infoList" scope="request" type="java.util.List"/> 37: <c:if test="${!empty infoList}"> 38: <c:forEach items="${infoList}" var="i"> 39: <script type="text/javascript"> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:602) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:489) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) com.shine.bookshop.filter.FilterLogin.doFilter(FilterLogin.java:45) com.shine.bookshop.filter.FilterEnconding.doFilter(FilterEnconding.java:41) 根本原因。 javax.servlet.ServletException: java.lang.InstantiationException: bean infoList not found within scope org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:906) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:835) org.apache.jsp.jsp.admin.login_jsp._jspService(login_jsp.java:206) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) com.shine.bookshop.filter.FilterLogin.doFilter(FilterLogin.java:45) com.shine.bookshop.filter.FilterEnconding.doFilter(FilterEnconding.java:41) 根本原因。 java.lang.InstantiationException: bean infoList not found within scope org.apache.jsp.jsp.admin.login_jsp._jspService(login_jsp.java:164) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) com.shine.bookshop.filter.FilterLogin.doFilter(FilterLogin.java:45) com.shine.bookshop.filter.FilterEnconding.doFilter(FilterEnconding.java:41)
06-20
D:\Users\lenovo\Desktop\PythonAutomatesProjectDevelopment\.venv\Scripts\python.exe "D:/Program Files/JetBrains/PyCharm Community Edition 2025.1.3.1/plugins/python-ce/helpers/pycharm/_jb_pytest_runner.py" --target test_nologin_homepage.py::TestNologinHomepage.test_nologin_message Testing started at 14:36 ... Launching pytest with arguments test_nologin_homepage.py::TestNologinHomepage::test_nologin_message --no-header --no-summary -q in D:\PythonAutomatesProjectDevelopment\PythonAppAutomationDevelopmentProject\testDouYin\test_case ============================= test session starts ============================= collecting ... collected 1 item test_nologin_homepage.py::TestNologinHomepage::test_nologin_message[\u767b\u5f55\u540e\u5373\u53ef\u67e5\u770b\u6d88\u606f] ============================= 1 failed in 22.23s ============================== FAILED [100%] test_case\test_nologin_homepage.py:41 (TestNologinHomepage.test_nologin_message[\u767b\u5f55\u540e\u5373\u53ef\u67e5\u770b\u6d88\u606f]) self = <test_nologin_homepage.TestNologinHomepage object at 0x00000284CE4AB8B0> setup = <PythonAppAutomationDevelopmentProject.testDouYin.page.PageNologinHomepage.PageNologinHomepage object at 0x00000284CE47C940> result = '登录后即可查看消息' @pytest.mark.消息 @pytest.mark.parametrize('result',Read_Excel_Douyin_Nologin.message(r'D:\PythonAutomatesProjectDevelopment\PythonAppAutomationDevelopmentProject\testDouYin\case_file\douyin_Nologin_Homepage.xlsx','消息')) def test_nologin_message(self,setup,result): > setup.getin() test_nologin_homepage.py:45: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ..\page\PageNologinHomepage.py:22: in getin ActionChains(self.driver).move_by_offset(476,1154).move_by_offset(4766,600).release().perform() D:\Users\lenovo\Desktop\PythonAutomatesProjectDevelopment\.venv\lib\site-packages\selenium\webdriver\common\action_chains.py:93: in perform self.w3c_actions.perform() D:\Users\lenovo\Desktop\PythonAutomatesProjectDevelopment\.venv\lib\site-packages\selenium\webdriver\common\actions\action_builder.py:168: in perform self.driver.execute(Command.W3C_ACTIONS, enc) D:\Users\lenovo\Desktop\PythonAutomatesProjectDevelopment\.venv\lib\site-packages\selenium\webdriver\remote\webdriver.py:454: in execute self.error_handler.check_response(response) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <appium.webdriver.errorhandler.MobileErrorHandler object at 0x00000284CE47C730> response = {'status': 400, 'value': '{"value":{"error":"invalid argument","message":"Exception while reading JSON","stacktrace":"...zer.java:517)\\n\\tat io.appium.uiautomator2.handler.W3CActions.safeHandle(W3CActions.java:83)\\n\\t... 34 more\\n"}}'} def check_response(self, response: Dict[str, Any]) -> None: """ https://www.w3.org/TR/webdriver/#errors """ payload = response.get('value', '') if isinstance(payload, dict): payload_dict = payload else: try: payload_dict = json.loads(payload) except (json.JSONDecodeError, TypeError): return if not isinstance(payload_dict, dict): return value = payload_dict.get('value') if not isinstance(value, dict): return error = value.get('error') if not error: return message = value.get('message', error) stacktrace = value.get('stacktrace', '') # In theory, we should also be checking HTTP status codes. # Java client, for example, prints a warning if the actual `error` # value does not match to the response's HTTP status code. exception_class: Type[sel_exceptions.WebDriverException] = ERROR_TO_EXC_MAPPING.get( error, sel_exceptions.WebDriverException ) if exception_class is sel_exceptions.WebDriverException and message: if message == 'No such context found.': exception_class = appium_exceptions.NoSuchContextException elif message == 'That command could not be executed in the current context.': exception_class = appium_exceptions.InvalidSwitchToTargetException if exception_class is sel_exceptions.UnexpectedAlertPresentException: raise sel_exceptions.UnexpectedAlertPresentException( msg=message, stacktrace=format_stacktrace(stacktrace), alert_text=value.get('data'), ) > raise exception_class(msg=message, stacktrace=format_stacktrace(stacktrace)) E selenium.common.exceptions.InvalidArgumentException: Message: Exception while reading JSON E Stacktrace: E io.appium.uiautomator2.common.exceptions.InvalidArgumentException: Exception while reading JSON E at io.appium.uiautomator2.handler.W3CActions.safeHandle(W3CActions.java:92) E at io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59) E at io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:266) E at io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:260) E at io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352) E at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345) E at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352) E at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345) E at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:435) E at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) E at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) E at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:250) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352) E at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345) E at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352) E at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345) E at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366) E at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352) E at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911) E at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) E at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:611) E at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:552) E at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:466) E at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438) E at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140) E at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) E at java.lang.Thread.run(Thread.java:761) E Caused by: io.appium.uiautomator2.utils.w3c.ActionsParseException: Action item 'io.appium.uiautomator2.model.api.touch.w3c.W3CGestureModel@63b54c3' of action 'mouse' should be preceded with at least one item containing absolute coordinates E at io.appium.uiautomator2.utils.w3c.ActionsTokenizer.extractCoordinates(ActionsTokenizer.java:272) E at io.appium.uiautomator2.utils.w3c.ActionsTokenizer.applyPointerActionToEventsMapping(ActionsTokenizer.java:443) E at io.appium.uiautomator2.utils.w3c.ActionsTokenizer.tokenize(ActionsTokenizer.java:517) E at io.appium.uiautomator2.handler.W3CActions.safeHandle(W3CActions.java:83) E ... 34 more D:\Users\lenovo\Desktop\PythonAutomatesProjectDevelopment\.venv\lib\site-packages\appium\webdriver\errorhandler.py:125: InvalidArgumentException 进程已结束,退出代码为 1
08-14
2025-10-16 17:32:57.869 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [83c00d8d, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] New http connection, requesting read 2025-10-16 17:32:57.869 [reactor-http-nio-3] DEBUG reactor.netty.transport.TransportConfig - [83c00d8d, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] Initialized pipeline DefaultChannelPipeline{(reactor.left.httpCodec = io.netty.handler.codec.http.HttpServerCodec), (reactor.left.httpTrafficHandler = reactor.netty.http.server.HttpTrafficHandler), (reactor.right.reactiveBridge = reactor.netty.channel.ChannelOperationsHandler)} 2025-10-16 17:32:57.874 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [83c00d8d, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] Increasing pending responses, now 1 2025-10-16 17:32:57.874 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServer - [83c00d8d-1, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] Handler is being applied: org.springframework.http.server.reactive.ReactorHttpHandlerAdapter@5f9f1a83 2025-10-16 17:32:57.874 [reactor-http-nio-3] DEBUG o.s.web.server.adapter.HttpWebHandlerAdapter - [83c00d8d-10] HTTP POST "/asn/main/update/cancel/release/status/3" 2025-10-16 17:32:57.875 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestMappingHandlerMapping - [83c00d8d-10] Mapped to com.hvlink.controller.AsnMainController#updateCancelReleaseStatus(Integer) 2025-10-16 17:32:57.876 [reactor-http-nio-3] DEBUG o.s.jdbc.datasource.DataSourceTransactionManager - Creating new transaction with name [com.hvlink.service.impl.AsnMainServiceImpl.updateCancelReleaseStatus]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-java.lang.Exception 2025-10-16 17:32:57.876 [reactor-http-nio-3] DEBUG o.s.jdbc.datasource.DataSourceTransactionManager - Acquired Connection [ConnectionID:3 ClientConnectionId: 7f4dca85-f955-4fdf-b69c-846681582a91] for JDBC transaction 2025-10-16 17:32:57.876 [reactor-http-nio-3] DEBUG o.s.jdbc.datasource.DataSourceTransactionManager - Switching JDBC Connection [ConnectionID:3 ClientConnectionId: 7f4dca85-f955-4fdf-b69c-846681582a91] to manual commit 2025-10-16 17:32:57.939 [reactor-http-nio-3] DEBUG o.s.jdbc.datasource.DataSourceTransactionManager - Initiating transaction commit 2025-10-16 17:32:57.940 [reactor-http-nio-3] DEBUG o.s.jdbc.datasource.DataSourceTransactionManager - Committing JDBC transaction on Connection [ConnectionID:3 ClientConnectionId: 7f4dca85-f955-4fdf-b69c-846681582a91] 2025-10-16 17:32:57.975 [reactor-http-nio-3] DEBUG o.s.jdbc.datasource.DataSourceTransactionManager - Releasing JDBC Connection [ConnectionID:3 ClientConnectionId: 7f4dca85-f955-4fdf-b69c-846681582a91] after transaction 2025-10-16 17:32:57.975 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.annotation.ResponseBodyResultHandler - [83c00d8d-10] Using 'application/json' given [application/json, text/plain, */*] and supported [application/json, application/*+json, application/x-ndjson, text/event-stream] 2025-10-16 17:32:57.975 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.annotation.ResponseBodyResultHandler - [83c00d8d-10] 0..1 [com.hvlink.common.Result<java.lang.String>] 2025-10-16 17:32:57.978 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 2025-10-16 17:32:57.978 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6f3635fd] was not registered for synchronization because synchronization is not active 2025-10-16 17:32:57.979 [reactor-http-nio-3] DEBUG o.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource 2025-10-16 17:32:57.980 [reactor-http-nio-3] DEBUG o.m.spring.transaction.SpringManagedTransaction - JDBC Connection [ConnectionID:3 ClientConnectionId: 7f4dca85-f955-4fdf-b69c-846681582a91] will not be managed by Spring 2025-10-16 17:32:57.980 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnMainMapper.selectList - ==> Preparing: SELECT id,company_code,factory_code,warehouse_code,shipper_id,asn_no,status,production_batch,shipping_date,estimated_arrival_date,estimated_consumption_time,is_first_product,is_fully_shipping,release_date,version_no,approval_code,type,order_no,supplier_code,is_deleted,create_by,create_time,update_by,update_time FROM tb_asn_main WHERE (id = ?) 2025-10-16 17:32:57.980 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnMainMapper.selectList - ==> Parameters: 3(Integer) 2025-10-16 17:32:57.998 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnMainMapper.selectList - <== Total: 1 2025-10-16 17:32:57.998 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6f3635fd] 2025-10-16 17:32:57.998 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 2025-10-16 17:32:57.998 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@681129a4] was not registered for synchronization because synchronization is not active 2025-10-16 17:32:58.007 [reactor-http-nio-3] DEBUG o.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource 2025-10-16 17:32:58.007 [reactor-http-nio-3] DEBUG o.m.spring.transaction.SpringManagedTransaction - JDBC Connection [ConnectionID:3 ClientConnectionId: 7f4dca85-f955-4fdf-b69c-846681582a91] will not be managed by Spring 2025-10-16 17:32:58.007 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnDetailMapper.selectList - ==> Preparing: SELECT id,company_code,factory_code,warehouse_code,shipper_id,asn_no,order_no,line_no,part_code,part_desc,version_no,approval_code,type,supplier_part,unit,asn_quantity,actual_shipment_quantity,testing_strategy,testing_status,testing_passed_quantity,supplier_code,is_deleted,create_by,create_time,update_by,update_time FROM tb_asn_detail WHERE (asn_no = ?) 2025-10-16 17:32:58.007 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnDetailMapper.selectList - ==> Parameters: 30002510160003(String) 2025-10-16 17:32:58.053 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnDetailMapper.selectList - <== Total: 1 2025-10-16 17:32:58.053 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@681129a4] 2025-10-16 17:32:58.054 [reactor-http-nio-3] INFO com.hvlink.service.impl.AsnMainServiceImpl - 调用订单服务回滚可发货数量,ASN号:30002510160003,回滚记录数:1 2025-10-16 17:32:58.055 [reactor-http-nio-3] INFO com.hvlink.service.impl.AsnMainServiceImpl - 调用订单服务回滚可发货数量,ASN号:30002510160003,回滚记录数:1 2025-10-16 17:32:58.056 [reactor-http-nio-3] DEBUG o.s.web.reactive.function.client.ExchangeFunctions - [6df9cfd3] HTTP PUT http://192.168.10.130:9001/order/rollback-available-qty 2025-10-16 17:32:58.058 [reactor-http-nio-2] DEBUG reactor.netty.resources.PooledConnectionProvider - [321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] Channel acquired, now: 1 active connections, 0 inactive connections and 0 pending acquire requests. 2025-10-16 17:32:58.058 [reactor-http-nio-2] DEBUG reactor.netty.http.client.HttpClientConnect - [321274ee-2, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] Handler is being applied: {uri=http://192.168.10.130:9001/order/rollback-available-qty, method=PUT} 2025-10-16 17:32:58.059 [reactor-http-nio-2] DEBUG r.netty.resources.DefaultPooledConnectionProvider - [321274ee-2, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] onStateChange(PUT{uri=/order/rollback-available-qty, connection=PooledConnection{channel=[id: 0x321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001]}}, [request_prepared]) 2025-10-16 17:32:58.060 [reactor-http-nio-2] DEBUG o.s.http.codec.json.Jackson2JsonEncoder - [6df9cfd3] Encoding [[OrderDetailUpdateDTO(purchaseOrderNo=5500000174, lineNo=60, partCode=S00003218101, rollbackQty=111. (truncated)...] 2025-10-16 17:32:58.061 [reactor-http-nio-2] DEBUG r.netty.resources.DefaultPooledConnectionProvider - [321274ee-2, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] onStateChange(PUT{uri=/order/rollback-available-qty, connection=PooledConnection{channel=[id: 0x321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001]}}, [request_sent]) 2025-10-16 17:32:58.554 [reactor-http-nio-2] DEBUG reactor.netty.http.client.HttpClientOperations - [321274ee-2, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] Received response (auto-read:false) : RESPONSE(decodeResult: success, version: HTTP/1.1) HTTP/1.1 200 Content-Type: <filtered> Content-Length: <filtered> Date: <filtered> 2025-10-16 17:32:58.554 [reactor-http-nio-2] DEBUG r.netty.resources.DefaultPooledConnectionProvider - [321274ee-2, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] onStateChange(PUT{uri=/order/rollback-available-qty, connection=PooledConnection{channel=[id: 0x321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001]}}, [response_received]) 2025-10-16 17:32:58.554 [reactor-http-nio-2] DEBUG o.s.web.reactive.function.client.ExchangeFunctions - [6df9cfd3] [321274ee-2, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] Response 200 OK 2025-10-16 17:32:58.554 [reactor-http-nio-2] DEBUG reactor.netty.channel.FluxReceive - [321274ee-2, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] [terminated=false, cancelled=false, pending=0, error=null]: subscribing inbound receiver 2025-10-16 17:32:58.554 [reactor-http-nio-2] DEBUG reactor.netty.http.client.HttpClientOperations - [321274ee-2, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] Received last HTTP packet 2025-10-16 17:32:58.554 [reactor-http-nio-2] ERROR com.hvlink.feign.asn.OrderServiceReactiveClient - 调用订单服务回滚接口异常 org.springframework.core.codec.CodecException: Type definition error: [simple type, class com.hvlink.common.Result]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.hvlink.common.Result` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 2] at org.springframework.http.codec.json.AbstractJackson2Decoder.processException(AbstractJackson2Decoder.java:238) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.MonoFlatMap] : reactor.core.publisher.Mono.flatMap(Mono.java:3137) org.springframework.http.codec.json.AbstractJackson2Decoder.decodeToMono(AbstractJackson2Decoder.java:179) Error has been observed at the following site(s): *______________________Mono.flatMap ⇢ at org.springframework.http.codec.json.AbstractJackson2Decoder.decodeToMono(AbstractJackson2Decoder.java:179) |_ checkpoint ⇢ Body from PUT http://192.168.10.130:9001/order/rollback-available-qty [DefaultClientResponse] |_ Mono.onErrorResume ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultResponseSpec.handleBodyMono(DefaultWebClient.java:624) *__FluxMap$MapSubscriber.onComplete ⇢ at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) *______________________Mono.flatMap ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultResponseSpec.bodyToMono(DefaultWebClient.java:549) |_ Mono.doOnSuccess ⇢ at com.hvlink.feign.asn.OrderServiceReactiveClient.rollbackAvailableQty(OrderServiceReactiveClient.java:59) Original Stack Trace: at org.springframework.http.codec.json.AbstractJackson2Decoder.processException(AbstractJackson2Decoder.java:238) at org.springframework.http.codec.json.AbstractJackson2Decoder.decode(AbstractJackson2Decoder.java:198) at org.springframework.http.codec.json.AbstractJackson2Decoder.lambda$decodeToMono$1(AbstractJackson2Decoder.java:179) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:493) at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:768) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.hvlink.common.Result` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 2] at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67) at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1904) at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400) at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1349) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1415) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2051) at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1427) at org.springframework.http.codec.json.AbstractJackson2Decoder.decode(AbstractJackson2Decoder.java:193) at org.springframework.http.codec.json.AbstractJackson2Decoder.lambda$decodeToMono$1(AbstractJackson2Decoder.java:179) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:493) at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:768) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-16 17:32:58.554 [reactor-http-nio-2] ERROR com.hvlink.feign.asn.OrderServiceReactiveClient - 调用订单服务回滚接口异常 org.springframework.core.codec.CodecException: Type definition error: [simple type, class com.hvlink.common.Result]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.hvlink.common.Result` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 2] at org.springframework.http.codec.json.AbstractJackson2Decoder.processException(AbstractJackson2Decoder.java:238) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.MonoFlatMap] : reactor.core.publisher.Mono.flatMap(Mono.java:3137) org.springframework.http.codec.json.AbstractJackson2Decoder.decodeToMono(AbstractJackson2Decoder.java:179) Error has been observed at the following site(s): *______________________Mono.flatMap ⇢ at org.springframework.http.codec.json.AbstractJackson2Decoder.decodeToMono(AbstractJackson2Decoder.java:179) |_ checkpoint ⇢ Body from PUT http://192.168.10.130:9001/order/rollback-available-qty [DefaultClientResponse] |_ Mono.onErrorResume ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultResponseSpec.handleBodyMono(DefaultWebClient.java:624) *__FluxMap$MapSubscriber.onComplete ⇢ at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) *______________________Mono.flatMap ⇢ at org.springframework.web.reactive.function.client.DefaultWebClient$DefaultResponseSpec.bodyToMono(DefaultWebClient.java:549) |_ Mono.doOnSuccess ⇢ at com.hvlink.feign.asn.OrderServiceReactiveClient.rollbackAvailableQty(OrderServiceReactiveClient.java:59) |_ Mono.doOnError ⇢ at com.hvlink.feign.asn.OrderServiceReactiveClient.rollbackAvailableQty(OrderServiceReactiveClient.java:66) Original Stack Trace: at org.springframework.http.codec.json.AbstractJackson2Decoder.processException(AbstractJackson2Decoder.java:238) at org.springframework.http.codec.json.AbstractJackson2Decoder.decode(AbstractJackson2Decoder.java:198) at org.springframework.http.codec.json.AbstractJackson2Decoder.lambda$decodeToMono$1(AbstractJackson2Decoder.java:179) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:493) at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:768) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.hvlink.common.Result` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 2] at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67) at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1904) at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400) at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1349) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1415) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2051) at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1427) at org.springframework.http.codec.json.AbstractJackson2Decoder.decode(AbstractJackson2Decoder.java:193) at org.springframework.http.codec.json.AbstractJackson2Decoder.lambda$decodeToMono$1(AbstractJackson2Decoder.java:179) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:493) at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:768) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-16 17:32:58.554 [reactor-http-nio-2] ERROR com.hvlink.service.impl.AsnMainServiceImpl - 回滚订单可发货数量失败,ASN号: 30002510160003, 错误: 调用订单服务回滚接口异常:Type definition error: [simple type, class com.hvlink.common.Result]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.hvlink.common.Result` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 2] 2025-10-16 17:32:58.554 [reactor-http-nio-2] ERROR com.hvlink.service.impl.AsnMainServiceImpl - 回滚订单可发货数量失败,ASN号: 30002510160003 java.lang.RuntimeException: 回滚订单可发货数量失败:调用订单服务回滚接口异常:Type definition error: [simple type, class com.hvlink.common.Result]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.hvlink.common.Result` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 2] at com.hvlink.service.impl.AsnMainServiceImpl.lambda$rollbackOrderAvailableQuantityReactive$23(AsnMainServiceImpl.java:902) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.MonoFlatMap] : reactor.core.publisher.Mono.flatMap(Mono.java:3137) com.hvlink.service.impl.AsnMainServiceImpl.rollbackOrderAvailableQuantityReactive(AsnMainServiceImpl.java:899) Error has been observed at the following site(s): *__Mono.flatMap ⇢ at com.hvlink.service.impl.AsnMainServiceImpl.rollbackOrderAvailableQuantityReactive(AsnMainServiceImpl.java:899) Original Stack Trace: at com.hvlink.service.impl.AsnMainServiceImpl.lambda$rollbackOrderAvailableQuantityReactive$23(AsnMainServiceImpl.java:902) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2400) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2196) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:74) at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) at reactor.core.publisher.Mono.subscribe(Mono.java:4490) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) at reactor.core.publisher.Operators.error(Operators.java:198) at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) at reactor.core.publisher.Mono.subscribe(Mono.java:4490) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:129) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:493) at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:768) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-16 17:32:58.554 [reactor-http-nio-2] ERROR com.hvlink.service.impl.AsnMainServiceImpl - 取消发布ASN失败,ID: 3 java.lang.RuntimeException: 回滚订单可发货数量失败: 回滚订单可发货数量失败:调用订单服务回滚接口异常:Type definition error: [simple type, class com.hvlink.common.Result]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.hvlink.common.Result` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 2] at com.hvlink.service.impl.AsnMainServiceImpl.lambda$rollbackOrderAvailableQuantityReactive$24(AsnMainServiceImpl.java:909) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.MonoError] : reactor.core.publisher.Mono.error(Mono.java:315) com.hvlink.service.impl.AsnMainServiceImpl.lambda$rollbackOrderAvailableQuantityReactive$24(AsnMainServiceImpl.java:909) Error has been observed at the following site(s): *__________Mono.error ⇢ at com.hvlink.service.impl.AsnMainServiceImpl.lambda$rollbackOrderAvailableQuantityReactive$24(AsnMainServiceImpl.java:909) *__Mono.onErrorResume ⇢ at com.hvlink.service.impl.AsnMainServiceImpl.rollbackOrderAvailableQuantityReactive(AsnMainServiceImpl.java:907) *___________Mono.then ⇢ at com.hvlink.service.impl.AsnMainServiceImpl.lambda$updateCancelReleaseStatus$32(AsnMainServiceImpl.java:1049) *___________Mono.then ⇢ at com.hvlink.service.impl.AsnMainServiceImpl.lambda$updateCancelReleaseStatus$32(AsnMainServiceImpl.java:1051) *_____Mono.thenReturn ⇢ at com.hvlink.service.impl.AsnMainServiceImpl.lambda$updateCancelReleaseStatus$32(AsnMainServiceImpl.java:1056) Original Stack Trace: at com.hvlink.service.impl.AsnMainServiceImpl.lambda$rollbackOrderAvailableQuantityReactive$24(AsnMainServiceImpl.java:909) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:142) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2400) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2196) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:74) at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) at reactor.core.publisher.Mono.subscribe(Mono.java:4490) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) at reactor.core.publisher.Operators.error(Operators.java:198) at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) at reactor.core.publisher.Mono.subscribe(Mono.java:4490) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:129) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:493) at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:768) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-16 17:32:58.554 [reactor-http-nio-2] DEBUG o.s.http.codec.json.Jackson2JsonEncoder - [83c00d8d-10] Encoding [Result(status=500, msg=取消发布失败:回滚订单可发货数量失败: 回滚订单可发货数量失败:调用订单服务回滚接口异常:Type definition error: [simple t (truncated)...] 2025-10-16 17:32:58.562 [reactor-http-nio-2] DEBUG r.netty.resources.DefaultPooledConnectionProvider - [321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] onStateChange(PUT{uri=/order/rollback-available-qty, connection=PooledConnection{channel=[id: 0x321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001]}}, [response_completed]) 2025-10-16 17:32:58.562 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [83c00d8d-1, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] Detected non persistent http connection, preparing to close 2025-10-16 17:32:58.562 [reactor-http-nio-2] DEBUG r.netty.resources.DefaultPooledConnectionProvider - [321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] onStateChange(PUT{uri=/order/rollback-available-qty, connection=PooledConnection{channel=[id: 0x321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001]}}, [disconnecting]) 2025-10-16 17:32:58.562 [reactor-http-nio-2] DEBUG r.netty.resources.DefaultPooledConnectionProvider - [321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] Releasing channel 2025-10-16 17:32:58.562 [reactor-http-nio-2] DEBUG reactor.netty.resources.PooledConnectionProvider - [321274ee, L:/192.168.10.130:21981 - R:/192.168.10.130:9001] Channel cleaned, now: 0 active connections, 1 inactive connections and 0 pending acquire requests. 2025-10-16 17:32:58.563 [reactor-http-nio-3] DEBUG o.s.web.server.adapter.HttpWebHandlerAdapter - [83c00d8d-10] Completed 200 OK 2025-10-16 17:32:58.563 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [83c00d8d-1, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] Last HTTP response frame 2025-10-16 17:32:58.563 [reactor-http-nio-3] DEBUG reactor.netty.channel.ChannelOperations - [83c00d8d-1, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] [HttpServer] Channel inbound receiver cancelled (subscription disposed). 2025-10-16 17:32:58.563 [reactor-http-nio-3] DEBUG reactor.netty.channel.FluxReceive - [83c00d8d-1, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] [terminated=true, cancelled=true, pending=0, error=null]: dropping frame LAST_CONTENT(decodeResult: success, content: PooledSlicedByteBuf(ridx: 0, widx: 18, cap: 18/18, unwrapped: PooledUnsafeDirectByteBuf(ridx: 707, widx: 707, cap: 2048))) 2025-10-16 17:32:58.563 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [83c00d8d-1, L:/192.168.10.130:9002 - R:/192.168.10.206:49782] Last HTTP packet was sent, terminating the channel
10-17
你提供的日志非常详细,从中可以清晰地看到一个 **WebFlux 响应式服务调用失败的完整链路**。核心问题是: --- ## ❌ 核心错误信息 ``` Cannot construct instance of `com.hvlink.common.Result` (no Creators, like default constructor, exist): cannot deserialize from Object value ``` 这说明:**Jackson 在反序列化 HTTP 响应时,无法创建 `Result<T>` 的实例**,因为缺少合适的构造器或配置不当。 尽管远程服务返回了 `200 OK`,但本地解析响应体时报错,导致整个求失败。 --- ## ✅ 问题析 ### 1. 错误发生位置 ```java webClient.put() .uri("/order/rollback-available-qty") .bodyValue(updateDTOs) .retrieve() .bodyToMono(new ParameterizedTypeReference<Result<String>>() {}) ``` 你使用了 `ParameterizedTypeReference` 来指定泛型型 `Result<String>`,这是正确的做法(因为 Java 泛型擦除)。 但是 Jackson 反序列化时抛出异常: > `InvalidDefinitionException: Cannot construct instance of com.hvlink.common.Result (no Creators, like default constructor, exist)` 这意味着你的 `Result` **没有无参构造函数(no-arg constructor)**,或者它被编译器优化掉了。 --- ## 🔍 深入原因 Jackson 默认要求 POJO 必须满足以下条件之一才能反序列化: - 有 `public` 无参构造函数 - 或者有 `@JsonCreator` 注解的构造函数 - 或者是 `static` 工厂法 + `@JsonCreator` 如果 `Result` 如下定义: ```java public class Result<T> { private String status; private String msg; private T data; public Result(String status, String msg, T data) { this.status = status; this.msg = msg; this.data = data; } // getter/setter... } ``` 👉 它只有**全参构造函数**,没有无参构造函数! ✅ Jackson 无法实例化这个 → 抛出 `InvalidDefinitionException` --- ## ✅ 解决案 ### ✅ 案一:为 `Result` 添加 `public` 无参构造函数(推荐) ```java public class Result<T> { private String status; private String msg; private T data; // 添加这个! public Result() {} public Result(String status, String msg, T data) { this.status = status; this.msg = msg; this.data = data; } // getters and setters... } ``` > ⚠️ 注意:即使你用了 Lombok 的 `@Data` 或 `@NoArgsConstructor`,也要确保生成的是 `public` 无参构造函数。 #### 如果使用 Lombok,写成: ```java @Data @NoArgsConstructor // 必须显式加上 @AllArgsConstructor public class Result<T> { private String status; private String msg; private T data; } ``` 否则默认不会生成无参构造函数! --- ### ✅ 案二:使用 `@JsonCreator` 和 `@JsonProperty` 显式指定反序列化式 如果你不想加无参构造函数,可以用注解告诉 Jackson 如何构造对象: ```java public class Result<T> { private final String status; private final String msg; private final T data; @JsonCreator public Result(@JsonProperty("status") String status, @JsonProperty("msg") String msg, @JsonProperty("data") T data) { this.status = status; this.msg = msg; this.data = data; } // getters... } ``` 这样即使没有无参构造函数也能反序列化。 --- ### ✅ 案三:启用 `MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS`(非必需) 虽然不是根本原因,但建议检查 Jackson 配置是否正常,避免模块冲突影响: ```yaml spring: jackson: deserialization: fail-on-unknown-properties: false ``` --- ## 🧪 补充建议:测试 WebClient 是否能正确处理泛型 你可以加个单元测试验证反序列化逻辑: ```java @Test void testDeserializeResult() { String json = "{\"status\":\"200\",\"msg\":\"success\",\"data\":\"ok\"}"; ObjectMapper mapper = new ObjectMapper(); try { Result<String> result = mapper.readValue(json, new TypeReference<Result<String>>() {}); System.out.println(result); } catch (Exception e) { e.printStackTrace(); // 看是否报同样的错 } } ``` --- ## 💡 日志中其他关键线索 | 日志片段 | 含义 | |--------|------| | `HTTP PUT http://192.168.10.130:9001/order/rollback-available-qty` | 求已发出 | | `Response 200 OK` | 远程服务成功返回 | | `CodecException: Type definition error` | 本地反序列化失败 | | `onErrorResume -> return Mono.just(Result.fail(...))` | 虽然捕获了异常,但上游已经中断 | ⚠️ 即使你写了 `.onErrorResume`,但由于 `bodyToMono()` 失败发生在 `retrieve()` 阶段,所以仍然会进入错误流。 --- ## ✅ 最终修复后的代码示例 ```java // 确保 Result 有 public 无参构造函数 @Data @NoArgsConstructor @AllArgsConstructor public class Result<T> { private String status; private String msg; private T data; } ``` 然后你的 WebClient 调用就能正常工作: ```java return webClient.put() .uri("/order/rollback-available-qty") .bodyValue(updateDTOs) .retrieve() .bodyToMono(new ParameterizedTypeReference<Result<String>>() {}) .doOnSuccess(result -> { if ("200".equals(result.getStatus())) { log.info("订单服务回滚成功"); } else { log.error("订单服务回滚失败:{}", result.getMsg()); } }) .doOnError(e -> log.error("调用订单服务回滚接口异常", e)) .onErrorResume(e -> { log.error("调用订单服务回滚接口异常", e); return Mono.just(Result.fail("调用订单服务回滚接口异常:" + e.getMessage())); }); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值