【问题标题】:How to customize a platformwebservices resource?如何自定义一个 platformwebservices 资源?
【发布时间】:2018-01-30 18:25:03
【问题描述】:

我正在使用 Hybris 6.2,我需要自定义从我的项目生成的一些资源。

我已阅读 this linkthis link,但我无法使用我的自定义资源。

我的资源位于 myextension\custom\src\de\hybris\platform\yacceleratorcore\customresource 中,如上述 wiki 指南中所示,到目前为止看起来像这样:

 package de.hybris.platform.yacceleratorcore.customresource;

 import de.hybris.platform.webservices.AbstractYResource;
 import de.hybris.platform.yacceleratorcore.model.SparepartsModel;

 import org.apache.log4j.Logger;


 @SuppressWarnings("PMD")
 public class CustomSparepartsResource extends AbstractYResource<SparepartsModel>
 {
     private static final Logger LOG = Logger.getLogger(CustomSparepartsResource.class);

     public CustomSparepartsResource()
     {
         super("CustomSpareparts");
     }

     @Override
     protected SparepartsModel readResource(final String resourceId) throws Exception
     {
         final SparepartsModel model = new SparepartsModel();
         model.setCode(resourceId);
         LOG.debug("Custom resource");
         return (SparepartsModel) readResourceInternal(model);
     }

 }

我试图仅打印该日志消息作为开始,但没有使用此资源,而不是在每个 ant clean all 上生成的默认资源。

我在 web-spring.xml 中定义了这个资源 bean,如下所示:

 <bean id="customSparepartsResource" class="de.hybris.platform.yacceleratorcore.customresource.CustomSparepartsResource" scope="prototype"     parent="abstractResource"/>

但是当我启动服务器时,我收到以下错误消息:

[1;31mERROR [localhost-startStop-1] [ContextLoader] 上下文 初始化失败 [m org.springframework.beans.factory.CannotLoadBeanClassException:不能 找课 [de.hybris.platform.yacceleratorcore.customresource.CustomSparepartsResource] 对于在类路径中定义的名称为“customSparepartsResource”的 bean 资源 [customplatformwebservices-web-spring.xml];嵌套异常 是 java.lang.ClassNotFoundException: de.hybris.platform.yacceleratorcore.customresource.CustomSparepartsResource

我在实施过程中遗漏了什么?如何使用自己的自定义资源成功替换生成的资源?

【问题讨论】:

    标签: web-services hybris webresource


    【解决方案1】:

    使用de.hybris.platform 作为自定义扩展的命名空间不是一个好主意。 wiki 中的这只是一个示例。使用你自己的命名空间,因为这样你可能会得到很多其他的 spring 错误。

    此外,您在 /platform 文件夹、扩展名中更改的所有内容都会在 build/update/ 之后重新生成。每次确保使用自己的命名空间创建自己的扩展,而不是使用默认的 hybris 扩展。

    【讨论】:

    • 我在我的问题中提到我正在使用我自己的扩展进行此自定义,至于我们的客户创建项目的包,感谢您的观察
    【解决方案2】:

    我终于找到了为我的 Hybris 版本 6.2 执行此操作的方法,首先我需要将我的资源命名为与我要替换的资源相同的名称,这样就不会生成默认资源,而是我的自定义资源将放在 web/gensrc 下。

    对于我的版本,无需将 bean 定义添加到 myextension-web-spring.xml 中。

    有了这个,使用你自己的自定义资源应该没有任何问题。

    附带说明,如果您需要在资源中使用服务和 dao 类,请不要将它们放在自定义扩展中,因为一旦您的自定义资源被复制到 platformwebservices,它们将无法使用除非您在不需要 platformwebservices 的不同扩展中定义它们,否则请查看这些类。

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      相关资源
      最近更新 更多