Hybris OCC接口报错:路径无对应资源问题求助
问题描述
通过ant extgen选择yocc模板生成了TestoccController控制器及extensioninfo.xml配置,项目编译运行正常,但调用接口/occ/v2/electronics/test123/get时返回错误:"There is no resource for path /occ/v2/electronics/test123/get",已执行ant clean all及清理IDE缓存,问题仍未解决。
控制器代码:
@Controller @RequestMapping(value ="/{baseSiteId}/test123") public class TestoccController { @Autowired private GetProductFacade productFacade; @RequestMapping(value = "/get",method = RequestMethod.GET) @ResponseBody public List<ProductDto> get(){ return productFacade.getProducts(); } }
extensioninfo.xml配置:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. --> <extensioninfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="extensioninfo.xsd"> <extension abstractclassprefix="Generated" classprefix="Testocc" description="testocc extension" jaloLogicFree="true" managername="TestoccManager" managersuperclass="de.hybris.platform.jalo.extension.Extension" name="testocc"> <!-- you should add all required extensions to this list, except platform extensions which are automatically required --> <requires-extension name="commercewebservices"/> <coremodule generated="true" manager="org.training.jalo.TestoccManager" packageroot="org.training"/> </extension> </extensioninfo>
解决方案
1. 给extensioninfo.xml添加Web模块配置
OCC扩展属于Web模块,当前配置缺少webmodule声明,导致Spring配置无法被加载,控制器未被注册。在<extension>标签内添加webmodule配置:
<webmodule jspcompile="false" webroot="/occ"/>
修改后的extensioninfo.xml核心部分:
<extension ...> <requires-extension name="commercewebservices"/> <coremodule generated="true" manager="org.training.jalo.TestoccManager" packageroot="org.training"/> <webmodule jspcompile="false" webroot="/occ"/> </extension>
2. 创建Spring组件扫描配置文件
在testocc/resource/META-INF目录下创建testocc-spring.xml,添加组件扫描规则,指向控制器所在的包(假设控制器在org.training.controller下,根据实际包路径调整):
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="org.training.controller"/> </beans>
3. 确认扩展已添加到localextensions.xml
检查项目的localextensions.xml文件,确保包含testocc扩展:
<extension name="testocc"/>
4. 重新构建并重启服务器
执行ant clean all重新构建项目,然后重启Hybris服务器,再次测试接口。
额外检查点
- 确保
GetProductFacade已被正确注册为Spring Bean(可通过添加@Component注解或在Spring配置文件中声明) - 验证控制器所在包路径与Spring扫描的包路径完全匹配
内容的提问来源于stack exchange,提问作者Carlos Eduardo Ilgenfritz
相关产品推荐
相关产品推荐

