Spring-Cloud-Cli
Spring-Cloud-Cli copied to clipboard
ZuulApplication Bug
运行 CloudDockerZuulApplication 时,报错: 如何解决?
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'factory': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException: chainDefinition cannot be null or empty. at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:185) ~[spring-beans-4.3.17.RELEASE.jar:4.3.17.RELEASE] at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:103) ~[spring-beans-4.3.17.RELEASE.jar:4.3.17.RELEASE]
@billho 与您遇到了相似的问题。但是我的提示是
2019-03-15 13:49:48.030 ERROR [cloud-zuul,,,] 5676 --- [ost-startStop-1] o.s.b.c.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name 'shiroFilter': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException: chainDefinition cannot be null or empty.
ShiroService.java中片段代码
List<PermissionRole> roles = userDao.getAllRolesByPermission(); for (PermissionRole role : roles){ filterRuleMap.put(role.getPermissionUrl(),role.getRoleName()); }
我是把PostgreSQL 直接改成了MySQL 其中有一个String_agg聚合函数直接让我改成了group_concat,可能是因为这个的原因导致查询 Shiro中要过滤的路径和权限中RoleName中就有NULL值。我将上述代码修改成
List<PermissionRole> roles = userDao.getAllRolesByPermission(); for (PermissionRole role : roles){ if (role.getRoleName() != null && role.getPermissionUrl() != null) { filterRuleMap.put(role.getPermissionUrl(),role.getRoleName()); } }
就不会出现
nested exception is java.lang.NullPointerException: chainDefinition cannot be null or empty.
的错误。或许不是最佳的解决办法,希望可以提供给您一点思路
更改后的版本已解决这个问题,最新版将数据源修改为mysql,并修改聚合函数