键的配置值:url.signed.validFor无法从Integer类分配

2020-08-20 11:29发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


指定属性 media.globalSettings.s3MediaStorageStrategy.url.signed.validFor = 3600 时,访问媒体对象时会导致以下错误/堆栈跟踪:

 信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 |  java.lang.IllegalStateException:键的配置值:url.signed.validFor无法从Integer类分配
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.media.storage.impl.DefaultMediaFolderConfig.getParameter(DefaultMediaFolderConfig.java:109)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.media.storage.impl.DefaultMediaFolderConfig.getParameter(DefaultMediaFolderConfig.java:119)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.amazon.media.url.S3MediaURLStrategy.getTimeToLiveForUrl(S3MediaURLStrategy.java:122)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.amazon.media.url.S3MediaURLStrategy.getUrlForMedia(S3MediaURLStrategy.java:98)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.jalo.media.MediaManager.getURLForMedia(MediaManager.java:540)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.media.impl.DefaultMediaService.getUrlForMedia(DefaultMediaService.java:647)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.media.DynamicAttributesMediaUrl.get(DynamicAttributesMediaUrl.java:26)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.media.DynamicAttributesMediaUrl.get(DynamicAttributesMediaUrl.java:1)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.internal.model.attribute.impl.DefaultDynamicAttributesProvider.get(DefaultDynamicAttributesProvider.java:46)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.model.ItemModelContextImpl.getDynamicValue(ItemModelContextImpl.java:345)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.core.model.media.MediaModel.getURL(MediaModel.java:361)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在java.lang.reflect.Method.invoke(Method.java:498)

  

由于以下代码而失败:

  public  T getParameter(字符串键,Class  requiredType){
          对象值= this.settings.get(key);
          if(value!= null &&!requiredType.isAssignableFrom(value.getClass())){
              抛出新的IllegalStateException("键的配置值:" + key +"不能从" + requiredType.getSimpleName()+" class"分配);
          }其他{
              返回值!= null?value:null;
          }
      }

  

Hybris将local.properties文件中的配置值视为String,因此抛出IllegalStateException。 是否有人遇到此问题,除了覆盖此代码外,还找到了解决方法?

预先感谢

Yannick

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


指定属性 media.globalSettings.s3MediaStorageStrategy.url.signed.validFor = 3600 时,访问媒体对象时会导致以下错误/堆栈跟踪:

 信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 |  java.lang.IllegalStateException:键的配置值:url.signed.validFor无法从Integer类分配
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.media.storage.impl.DefaultMediaFolderConfig.getParameter(DefaultMediaFolderConfig.java:109)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.media.storage.impl.DefaultMediaFolderConfig.getParameter(DefaultMediaFolderConfig.java:119)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.amazon.media.url.S3MediaURLStrategy.getTimeToLiveForUrl(S3MediaURLStrategy.java:122)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.amazon.media.url.S3MediaURLStrategy.getUrlForMedia(S3MediaURLStrategy.java:98)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.jalo.media.MediaManager.getURLForMedia(MediaManager.java:540)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.media.impl.DefaultMediaService.getUrlForMedia(DefaultMediaService.java:647)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.media.DynamicAttributesMediaUrl.get(DynamicAttributesMediaUrl.java:26)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.media.DynamicAttributesMediaUrl.get(DynamicAttributesMediaUrl.java:1)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.internal.model.attribute.impl.DefaultDynamicAttributesProvider.get(DefaultDynamicAttributesProvider.java:46)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.servicelayer.model.ItemModelContextImpl.getDynamicValue(ItemModelContextImpl.java:345)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在de.hybris.platform.core.model.media.MediaModel.getURL(MediaModel.java:361)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  信息|  jvm 1 | 主|  2017/06/30 12:46:06.371 | 在java.lang.reflect.Method.invoke(Method.java:498)

  

由于以下代码而失败:

  public  T getParameter(字符串键,Class  requiredType){
          对象值= this.settings.get(key);
          if(value!= null &&!requiredType.isAssignableFrom(value.getClass())){
              抛出新的IllegalStateException("键的配置值:" + key +"不能从" + requiredType.getSimpleName()+" class"分配);
          }其他{
              返回值!= null?value:null;
          }
      }

  

Hybris将local.properties文件中的配置值视为String,因此抛出IllegalStateException。 是否有人遇到此问题,除了覆盖此代码外,还找到了解决方法?

预先感谢

Yannick

付费偷看设置
发送
3条回答
CPLASF-自律
1楼 · 2020-08-20 11:38.采纳回答

这是由于amazoncloud-spring.xml文件中的错误。 它具有ConfigValueMappingRegistrar条目,但是属性名称错误:

  
>

如您所见,此处的属性名称为url.validFor;。 但是文档说明它应该是url.signed.validFor(这是S3MediaStorageStrategy中使用的属性)。

您应该能够通过在自定义扩展程序的spring文件中为正确的属性名称添加另一个spring条目来解决该错误:

 
 

如果您不想添加Spring" p"名称空间,则bean定义如下所示:

 
      
      
  

显然,此问题已在6.7中修复: https://jira.hybris.com/browse/ ECP-2418

宇峰Kouji
2楼-- · 2020-08-20 11:32

嗨,Yannick,

我们使用Hybris 5.4,可能的解决方法是使用默认值(10分钟)。 在S3MediaURLStrategy中,您可以找到所用的DEFAULT_TIME_TO_LIVE。

注释您的行media.globalSettings.s3MediaStorageStrategy.url.signed.validFor = 3600

和(如果使用的话)media.folder.yourMediaFolder.url.signed.validFor = 5

或者,如果需要,您可以实施自定义策略。

CPLASF-自律
3楼-- · 2020-08-20 11:43

您好,Yannick,

我也出现了同样的问题。 您能解决这个问题吗?

谢谢

一周热门 更多>