bladeX 使用心得及错误记录

###bladeX的微服务中,添加后,总是报 No mapping for GET / 异常,No handler found for GET /错误 原因如下:

2021-10-22 08:08:47.230  WARN 5396 --- [ XNIO-1 task-14] o.s.web.servlet.PageNotFound             : No mapping for GET /

2021-10-22 08:08:47.232 ERROR 5396 --- [ XNIO-1 task-14] o.s.c.log.error.RestExceptionTranslator  : 404没找到请求:No handler found for GET /

swagger 配置有问题,修改后正常的,

原配置:

- name: trash

  uri: localhost:17044

 location: /v2/api-docs

改成以下正常了:

- name: 智慧垃圾箱

  uri: 127.0.0.1   ###测试,请指向本机

  location: /blade-trash/v2/api-docs

### bladeX商业项目 中使用JPA 中 :报 Space is not allowed after parameter prefix ':'

(SELECT a.user_id,(@rowno:=@rowno+1)

改成下面:

(SELECT a.user_id,(@rowno\\:=@rowno+1)

备注:JSPL中 “:”是保留符号,必须使用转义  \\:

### JPA错误 Specified class is an interface

JPSL 格式错误,请仔细检查;

###docker镜像无法删除 Error:No such image:xxxxxx

删除所有镜像

docker rmi $(docker images -aq)

删除失败,报错

Error: No such image: 7e4d58f0e5f3

查看路径

cd /var/lib/docker/image/overlay2/imagedb/content/sha256/

删除对应的数据

 7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d

### bladeX cloud SerializationException: Could not read JSON 看错误信息,像是JSON转换 错误,但其实是redis

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

### Error querying database.  Cause: org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Illegal character ((CTRL-CHAR, code 11)): only regular white space (\r, \n, \t) is allowed between tokens

at [Source: (byte[])"3org.springblade.core.datascope.model.DataScopeModecreate_dept "; line: 1, column: 2]; nested exception is com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 11)): only regular white space (\r, \n, \t) is allowed between tokens

at [Source: (byte[])"3org.springblade.core.datascope.model.DataScopeModecreate_dept "; line: 1, column: 2]

### Cause: org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Illegal character ((CTRL-CHAR, code 11)): only regular white space (\r, \n, \t) is allowed between tokens

at [Source: (byte[])"3org.springblade.core.datascope.model.DataScopeModecreate_dept "; line: 1, column: 2]; nested exception is com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 11)): only regular white space (\r, \n, \t) is allowed between tokens

at [Source: (byte[])"3org.springblade.core.datascope.model.DataScopeModecreate_dept "; line: 1, column: 2]

Illegal character ((CTRL-CHAR, code 31))

编码转换错误

解决方案:redis序列化方式是:protostuff,报错的原因,改成JSON即可;

1

#blade配置

blade:

  #token配置

  token:

    #是否有状态

    state: false

  #redis序列化方式(注意这里序列化方式是:protostuff,报错的原因,改成json

  redis:

    serializer-type: protostuff

  #接口配置

2)redis 服务器缓存要清除;要不还是取不到,其实这里纠结了很久,是缓存还是序列化配置问题;不是jackson 的JSON转换问题;

参考:

springframework.data.redis.serializer.SerializationException: Could not read JSON: Illegal character ((CTRL-CHAR, code 0)): only regular white space (\r, \n, \t) is allowed between tok redis json 序列化 - XIN1024 - 博客园

使用@DataAuth注解 本人及下级部门数据权限是 redis序列化错误 - Blade技术社区 (bladeX 官方解决办法)

### nacos请求响应错误

Error to process server push response com.alibaba.nacos.client.remote.worker

com.alibaba.nacos.common.remote.client.RpcClient

注册的这个地址,本机是有的,但是就是注册不上去 172.17.0.1

而错误日志走的是IP 172.17.0.2

[踩坑] Nacos服务注册地址为内网IP的解决办法 - 简书  (这里有分析出来)

Docker部署的Spring Cloud微服务注册到Nacos的IP为私网无法访问 - 有来技术团队 - 博客园

目前使用JPA 还是有些小问题,但不影响正常使用;有时间再改进;

###centos7 mkdir:无法创建目录"***": 设备上没有空间

1、查看系统磁盘使用情况

df -h

2、查看docker镜像及容器空间占比

docker system df

3、查找大文件   # 查找"/"目录下所有大于100M的所有文件

find / -type f -size +500M -print0 | xargs -0 du -h | sort -nr   

find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr

4、清理大文件(主要是docker容器日志)找到大文件,删除即可;

echo > xxxx.log

5、根治方法:控制容器日志输出量

### JPA HQL错误

IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: member near line 1, column 14 [select count(member)

from org.springblade.entity.secondary.Member member]

分析:hql 不支持 left join on   要改成where 就可以了

###CORS error所有的接口都正常了,除了上传图片[Servlet]方式

所有接口都正常,在外置的浏览器中,发现图片上传不了;

原因是,上传使用的[Servlet]方式,

解决方案:添加以下方法:

@Override

protected void doOptions(HttpServletRequest request, HttpServletResponse response) {

    response.setHeader("Access-Control-Allow-Origin" , "*" );

    response.setHeader("Access-Control-Allow-Credentials" , "true" );

    response.setHeader("Access-Control-Allow-Methods" , "*" );

    response.setHeader("Access-Control-Max-Age" , "36000" );

    response.setHeader("Access-Control-Allow-Headers" , "Authorization,Origin,X-Requested-With,Content-Type,Accept,"

            + "content-Type,origin,x-requested-with,content-type,accept,authorization,token,id,X-Custom-Header,X-Cookie,Connection,User-Agent,Cookie,*" );

    response.setHeader("Access-Control-Request-Headers" , "Authorization,Origin, X-Requested-With,content-Type,Accept" );

    response.setHeader("Access-Control-Expose-Headers" , "*" );

}

参考:https://blog.csdn.net/wade725/article/details/103832559

###iptables: No chain/target/match by that name,创建docker container时出错;

docker restart container-name
然后得到一个错误
docker0: iptables: No chain/target/match by that name
原因:
在docker启动这个容器的时候,防火墙是开启的,docker像防火墙注册了端口映射规则,
过了一段时间,因为某些原因,我关闭了防火墙,在访问docker里面的服务时发现有一些
怪异,但是又说不上来什么怪异,就试着重启一下服务器,然后就得到这个错误,
所以只需要重启一下docker就能得到恢复到正确的状态

###idea maven导入 netty 时,报以下错误:

maven Cannot resolve io.netty:netty-tcnative:1.1.33.Fork22

RocketMQ——源码报错Missing artifact io.netty:netty-tcnative:jar:${os.detected.classifier}:1.1.33.Fork22_东天里的冬天-CSDN博客 (RocketMQ错误)

解决办法,就是找到maven库 repository 找到 org > apach > rocketmq > rocketmq-remoting 找到4.2版本,好像是4.5没有这个错误;

在rocketmq-remoting的pom.xml文件中找到如下内容,并注释

            <classifier>${os.detected.classifier}</classifier>

修改后如下:

    <!--<classifier>${os.detected.classifier}</classifier>-->

按上面的文档操作即可;

IDEA中部分依赖包下载失败 提示cannot resolve plugin xxx

IDEA中部分依赖包下载失败 提示cannot resolve plugin xxx_yogima的博客-CSDN博客  (解决办法)

1)检查maven 配置,看对不对

2)检查镜像源,多加几个,(我这次就是这么 解决的,并把阿里放在最前面)

###docker部署 bladeX后,网段docker_blade_net 在宿主机,当前这个网段无法启动;

1)目前还没有找到办法

2)dev,prod,test 混合使用。出错了,一个一个容器去检查,得到log

###bladeX部署到docker 里后,重启动有的容器无法启动

1)使用 docker container ls -a 查看所有的容器,无PORT显示表示没有启动成功;

2)使用 docker container start [names]或[Container ID],启动,可以启动多个;

docker部署 bladeX 时,出错;

ERROR: for web-nginx  Cannot start service web-nginx: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"rootfs_linux.go:58: mounting \\\"/docker/nginx/web/nginx.conf\\\" to rootfs \\\"/var/lib/docker/overlay2/8414852c95b7adb22ffcaad8a7e19137bcaaa4cb635cf8d39634d2bd5bf72c9a/merged\\\" at \\\"/var/lib/docker/overlay2/8414852c95b7adb22ffcaad8a7e19137bcaaa4cb635cf8d39634d2bd5bf72c9a/merged/etc/nginx/nginx.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

/docker/nginx/api/nginx.conf 挂载到已经创建的目录后,再将文件往在同个目录下,所以报错;/docker/nginx/api/nginx.conf/nginx.conf


版权声明:本文为maimi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。