Broadleaf Commerce Demo启动失败:Solr索引清理异常求助
解决Broadleaf Commerce Demo启动时Solr索引重建失败问题
嘿,我看你这是Broadleaf启动时碰到Solr相关的问题了!从报错栈能明确看到,SolrIndexCleanupServiceImpl在启动阶段尝试自动重建索引,但因为无法连接Solr服务,导致删除索引文档失败,最终引发启动异常。下面给你几个针对性的解决步骤:
排查步骤与解决方案
1. 确认Solr服务是否正常运行
Broadleaf Commerce默认依赖Solr作为搜索索引服务,你需要:
- 先确认本地已经安装了与Broadleaf 5.2.3-GA兼容的Solr版本(推荐6.x系列,比如6.6.6)
- 启动Solr服务,默认端口是8983,访问
http://localhost:8983验证是否能打开Solr控制台 - 如果是首次启动Solr,需要创建Broadleaf对应的core(默认名称一般为
blc)
2. 核对配置文件中的Solr连接信息
检查你项目中(core或admin模块)的application.properties或application.yml文件,找到Solr相关配置项:
# 示例配置,根据你的实际情况调整 broadleaf.solr.url=http://localhost:8983/solr/blc broadleaf.solr.username= broadleaf.solr.password=
确保配置的地址、端口和core名称与你运行的Solr服务完全一致。
3. 临时禁用启动时自动重建索引(快速启动项目)
如果只是想先让项目跑起来,之后再处理Solr的配置,可以临时关闭启动时的索引重建:
- 在配置文件中添加参数:
broadleaf.solr.rebuild.on.startup=false - 或者直接注释掉
SolrIndexCleanupServiceImpl中rebuildIndexAtStartupIfNecessary方法的逻辑(不推荐长期这么做)
4. 验证Maven依赖的完整性
虽然你已经执行了mvn install,但可以再检查下pom.xml中Solr相关依赖的版本是否与Broadleaf兼容:
<dependency> <groupId>org.broadleafcommerce</groupId> <artifactId>broadleaf-framework</artifactId> <version>5.2.3-GA</version> </dependency> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>6.6.6</version> </dependency>
如果版本不匹配,调整后重新执行mvn clean install刷新依赖。
你的报错信息(方便参考)
2018-05-27 13:59:26.784 INFO 13536 --- [ main] utoConfigurationReportLoggingInitializer : Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 2018-05-27 13:59:26.797 ERROR 13536 --- [ main] o.s.boot.SpringApplication : Application startup failed java.lang.reflect.UndeclaredThrowableException: Failed to invoke event listener method HandlerMethod details: Bean [com.community.core.service.search.SolrIndexCleanupServiceImpl$$EnhancerBySpringCGLIB$$c6631d93] Method [public void com.community.core.service.search.SolrIndexCleanupServiceImpl.rebuildIndexAtStartupIfNecessary() throws org.broadleafcommerce.common.exception.ServiceException,java.io.IOException] Resolved arguments: at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:273) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:177) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:140) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE] at com.community.admin.AdminApplication.main(AdminApplication.java:18) [classes/:na] Caused by: org.broadleafcommerce.common.exception.ServiceException: Could not delete documents at org.broadleafcommerce.core.search.service.solr.index.SolrIndexServiceImpl.deleteAllNamespaceDocuments(SolrIndexServiceImpl.java:339) ~[broadleaf-framework-5.2.3-GA.jar:na] at org.broadleafcommerce.core.search.service.solr.index.SolrIndexServiceImpl.preBuildIndex(SolrIndexServiceImpl.java:183) ~[broadleaf-framework-5.2.3-GA.jar:na] at org.broadleafcommerce.core.search.service.solr.index.SolrIndexServiceImpl.rebuildIndex(SolrIndexServiceImpl.java:174) ~[broadleaf-framework-5.2.3-GA.jar:na] at com.community.core.service.search.SolrIndexCleanupServiceImpl.rebuildIndexAtStartupIfNecessary(SolrIndexCleanupServiceImpl.java:54) ~[classes/:na] at com.community.core.service.search.SolrIndexCleanupServiceImpl$$FastClassBySpringCGLIB$$b84b8451.invoke(<generated>) ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.14.RELEASE.jar:4.3.14.RELEASE] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation
内容的提问来源于stack exchange,提问作者Hesam Ghiasi
相关产品推荐
相关产品推荐

