点击此处---> 群内免费提供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
这是由于amazoncloud-spring.xml文件中的错误。 它具有ConfigValueMappingRegistrar条目,但是属性名称错误:
>如您所见,此处的属性名称为url.validFor;。 但是文档说明它应该是url.signed.validFor(这是S3MediaStorageStrategy中使用的属性)。
您应该能够通过在自定义扩展程序的spring文件中为正确的属性名称添加另一个spring条目来解决该错误:
如果您不想添加Spring" p"名称空间,则bean定义如下所示:
显然,此问题已在6.7中修复: https://jira.hybris.com/browse/ ECP-2418
嗨,Yannick,
我们使用Hybris 5.4,可能的解决方法是使用默认值(10分钟)。 在S3MediaURLStrategy中,您可以找到所用的DEFAULT_TIME_TO_LIVE。
注释您的行media.globalSettings.s3MediaStorageStrategy.url.signed.validFor = 3600
和(如果使用的话)media.folder.yourMediaFolder.url.signed.validFor = 5
或者,如果需要,您可以实施自定义策略。
您好,Yannick,
我也出现了同样的问题。 您能解决这个问题吗?
谢谢
一周热门 更多>