WSO2 API Manager的PizzaShack站点登录后返回HTTP 500错误
WSO2 API Manager Pizza Shack登录后500错误解决方案
问题根因
本次出现的HTTP Status 500 – Internal Server Error错误由index.jsp第145行代码调用manager.getAvailablePizzaList(token)失败触发,核心原因可归为三类:
- 身份令牌token无效或传递异常:登录后生成的用户认证令牌未正确注入菜单接口请求,WSO2 APIM网关鉴权失败,返回的异常响应未被代码捕获,最终抛出服务端错误
- 后端API配置不匹配:Pizza Shack后端API未在WSO2 APIM中正确发布,或API的访问上下文、网关地址与前端配置的
serverURL不一致,接口调用出现404/401错误后直接触发服务端异常 - 依赖版本不兼容:Pizza Shack web应用依赖的WSO2客户端包、servlet包与你当前部署的WSO2 APIM版本不匹配,导致
MenuItemManager类方法调用异常
修复操作步骤
按以下顺序排查即可定位并解决问题:
- 验证令牌有效性
登录成功后先提取session中存储的token值,手动向菜单接口发起请求,请求头携带Authorization: Bearer 你的token值,如果返回401错误,说明令牌无API访问权限,重新配置WSO2 APIM的用户角色权限,确保登录用户所属角色有Pizza Shack API的访问授权 - 核对API发布配置
登录WSO2 APIM Publisher控制台,确认Pizza Shack API已发布到对应网关,访问上下文为/pizzashack,且你登录所用的应用已正确订阅该API,密钥类型与调用时使用的一致 - 补全异常捕获定位具体原因
你当前提供的日志仅标注了报错行,无完整异常堆栈,在index.jsp第145行外围添加try-catch块,打印完整异常信息和入参即可定位具体问题:
try { MenuItemManager manager = new MenuItemManager(); List<Pizza> menuItems = manager.getAvailablePizzaList(token); } catch (Exception e) { e.printStackTrace(); // 打印入参排查参数异常问题 System.out.println("请求令牌: " + token); System.out.println("配置的服务端地址: " + PizzaShackWebConfiguration.getInstance().getServerURL()); }
内容的提问来源于stack exchange,提问作者Lucca Monteiro
相关产品推荐
相关产品推荐

