Intershop 7.9后台自定义应用类型配置:DBInit执行报错求助
我之前在Intershop 7.9里配置自定义应用类型的Backoffice扩展时,正好碰到过一模一样的DBInit报错,给你几个亲测有效的排查和解决方向:
先核对自定义应用类型的配置完整性
你得确保apptype.properties(或对应的自定义配置文件)里,给新应用类型配置的参数都是正确的,尤其是和通道关联的部分。比如:apptype.mycustom.type=SalesChannel apptype.mycustom.basetype=Channel apptype.mycustom.templatename=MyCustomChannelTemplate这里的
templatename必须是系统已存在的通道模板,或者你已经在DBInit的前置脚本里创建了这个模板——要是模板不存在,CreateSalesChannel-CreateChannelObj管道肯定会执行失败。理顺DBInit脚本的执行顺序
从报错里的ProcessChannel-DBInit和涉及的Channel、ChannelLocalization类来看,你的初始化脚本大概率有顺序问题:[xx.xxx.webshop.dbinit.data.organization.Channel,xx.xxx.webshop.dbinit.data.organization.ChannelLocalization,ProcessChannel-DBInit]
必须保证Channel对象先创建完成,再执行ChannelLocalization的初始化;而且自定义应用类型的注册步骤,一定要放在所有通道数据初始化之前。去检查你的dbinit.xml,把应用类型注册的Pipeline或者脚本移到通道初始化的前面。排查
CreateSalesChannel-CreateChannelObj管道的参数问题
报错里提到Version:null,这说明管道执行时可能缺少了必填的版本参数,或者自定义应用类型需要的某些参数没正确传递。你可以开启Intershop的Pipeline调试模式,用Backoffice的Pipeline Debugger去看这个管道的输入参数;或者本地调试DBInit过程,跟踪管道里每个Pipelet的执行情况,看是哪个环节参数为空或者不合法。另外也要确认你的自定义应用类型是否正确继承了SalesChannel的必要属性,没漏掉必填的扩展字段。检查数据库层面的兼容性
先确认DBInit用的数据库用户有足够的权限创建表、插入数据;再检查Intershop 7.9的数据库schema和你的自定义扩展是否兼容——比如你给通道加的自定义字段,有没有在CHANNEL表或者对应的扩展表里正确创建,要是字段不存在,插入数据时肯定会触发异常,进而导致管道调用失败。深挖日志找根因
ISH-CORE-2490只是个顶层的管道调用失败提示,你得去logs/server.log里找更详细的堆栈信息,看具体是管道里哪个Pipelet抛出了异常(比如CreateObject或者SetObjectValue),这样才能精准定位到数据或配置的问题点。
内容的提问来源于stack exchange,提问作者Goran Petanjek

