如何自定义platformwebservices资源?

时间:2018-01-30 18:25:03

标签: web-services hybris webresource

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

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

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

 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

我的实施中缺少什么?如何使用我自己的自定义资源成功替换生成的资源?

2 个答案:

答案 0 :(得分:0)

de.hybris.platform用作自定义扩展程序的命名空间并不是一个好主意。这在wiki中只是一个例子。使用您自己的命名空间,因为这样您可能会遇到很多其他弹簧错误。

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

答案 1 :(得分:0)

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

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

使用您自己的自定义资源应该没有任何问题。

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