Java 如何解决Hybris中的AttributeNotSupportDexception

Java 如何解决Hybris中的AttributeNotSupportDexception,java,hybris,Java,Hybris,每次向items.xml添加新属性时,我们都必须执行hybris更新,否则会出现一些错误,如:JaloItemNotFoundException:no attribute Cart.newAttribute 但是,有时在执行更新后,我们得到的不是JaloItemNotFoundException,而是类似于: de.hybris.platform.servicelayer.exceptions.AttributeNotSupportedException: cannot find attribu

每次向items.xml添加新属性时,我们都必须执行hybris更新,否则会出现一些错误,如:
JaloItemNotFoundException:no attribute Cart.newAttribute

但是,有时在执行更新后,我们得到的不是JaloItemNotFoundException,而是类似于:

de.hybris.platform.servicelayer.exceptions.AttributeNotSupportedException: cannot find attribute newAttribute
对于第二种情况,如果我们在更新后重新启动服务器,它总是有效的。 除了在更新后重新启动服务器之外,还有其他方法可以解决这个问题吗

几年前,我在一家公司工作,该公司在更新后将重新启动作为“部署步骤”添加。我试图在这里避免这种情况

我试图执行几个更新并清理类型缓存。但是没有运气

使用“更新运行系统”进行平台更新通常就足够了。如果您有本地化、impex或其他一些更改,则可能需要包括其他选项或扩展

如果您有集群环境,请确保所有节点都已更新/刷新

确保您的构建和部署过程类似于:

de.hybris.platform.servicelayer.exceptions.AttributeNotSupportedException: cannot find attribute newAttribute
  • 建造
  • 部署
  • 重新启动服务器。您可以手动(或通过脚本)停止/启动,或者在Hybris检测到部署的更改时让它自己重新启动
  • 运行平台更新

在启动服务器之前,您可以尝试在生成后直接从命令行(即“ant updatesystem”)更新平台。

部署后重新启动是一个非常常见的步骤(如果在服务器启动的情况下执行更新系统)

我认为需要重新启动的原因之一是因为Spring上下文需要重新初始化,因为一些bean需要新类型的系统信息

例如,假设您需要为新创建的类型创建一个新类型和一个拦截器。部署此更改时,请执行以下操作:

  • 更改二进制文件并启动服务器
  • 执行更新系统以使数据库获得最新的列等
  • 现在,如果您尝试查看拦截器是否工作,您将看到它不工作,因为当它的Springbean被实例化时(在服务器启动期间),它应该处理的类型在数据库中不存在

    因此,重新启动拦截器后,拦截器将按预期工作

    PS:上述拦截器问题可能已在最新的Hybris版本中得到修复。