日常采坑篇
2020.10.19
在启动war项目的时候出现:
请求的资源[/$%7BpageContext.request.contextPath%7D/savePerson]不可用
需要检查web.xml文件 头下面的那个版本号
正确的web.xml头是:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true">
2020.10.21
在springmvc配置入参类型为Set集合时要注意在pojo文件下的类要加构造器
![](https://img2020.cnblogs.com/blog/1979970/202010/1979970-20201021232201968-1666790374.png)
2020-10-26
在写Oracle查询语句时候:
注意不为空(null)
错误写法:
select * from emp where comm not is null ;
正确写法:(两种方式)
select * from emp where comm is not null; select * from emp where not comm is null;
坑:
2020-11-10:
在数据库中怎么做到大量数据迁移?
在Oracle数据库中,使用同义词
MySQL数据库中需要关闭 唯一约束 和 关闭验证(验证数据是否正确).
2020-11-10:
在邮件中 怎么在百万级邮件中,把黑名单的邮件剔除出去?
使用布隆选择器(布隆算法)3次删选过滤.
2020-11-16:
1.设置zookeeper开机自动启动
zookeeper 未启动
检查是否启动 netstat -antp|grep 2181
扩展知识点1:设置zookeeper开机自动启动
(1)、设置开机自动启动配置文件的可执行权限
chmod +x /etc/rc.d/rc.local
(2)、编辑开机自动启动配置文件
vi /etc/rc.d/rc.local
在最后行增加内容:
source /etc/profile
/usr/local/zookeeper/bin/zkServer.sh start
/usr/local/tomcat/bin/startup.sh
2.连接dubbo监控中心失败
1、zookeeper所在的linux服务器上tomcat是否启动
netstat -antp|grep 8080
2、尝试访问linux服务器8080端口
http://192.168.188.128:8080
3、如果访问失败,确认防火墙是否关闭
systemctl stop firewalld
systemctl disable firewalld
4、再次尝试访问 http://192.168.188.128:8080
5、如果还是不能访问到,tomcat配置出现问题
重新安装tomcat rm -rf /usr/local/tomcat
3.发布dubbo的管理监控中心
1、确认服务器配置好java环境
java -version
2、上传tomcat的安装包
apache-tomcat-8.5.51.tar.gz
3、解压缩tomcat的安装包
tar xvf apache-tomcat-8.5.51.tar.gz -C /usr/local/
4、进入解压缩目录,修改目录名称
cd /usr/local
mv apache-tomcat-8.5.51/ tomcat
5、测试启动tomcat
cd tomcat/bin
./startup.sh //启动tomcat
6、查看端口号是否监听
netstat -antp|grep 8080
7、统一关闭防火墙
systemctl stop firewalld //关闭当前防火墙服务
systemctl disable firewalld //禁用防火墙服务开机自启
8、测试访问tomcat
http://192.168.188.142:8080/
9、停止tomcat
./shutdown.sh //停止需要等待30秒
10、上传dubbo监控管理的war包到指定tomcat的目录
/usr/local/tomcat/webapps
dubbo-admin-2.6.1.war
11、删除 tomcat目录下的 ROOT目录
rm -rf ROOT/
12、修改所上传dubbo的war包名称
mv dubbo-admin-2.6.1.war ROOT.war
13、再次启动tomcat
cd ../bin
./startup.sh
14、正式访问dubbo的管理控制台
输入账号:root
密码:root
4.空指针问题
1、确认dubbo监控中心已经注册上服务提供者 如果未注册上服务提供者: (1)、解决服务提供者注册问题 (1.1)确认是否导入了dubbo相关依赖包 <!-- dubbo相关 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> </dependency> (1.2)、确认spring配置文件dubbo的配置文件是否正确 头文件是否引用错误:xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" <dubbo:annotation package="com.offcn.sellergoods.service.impl"/> 重点检查扫描包是否正确,ctrl+鼠标左键 看是否变成 小手 (1.3)、检查服务实现类,注解是否加上? 是否加错了注解:com.alibaba.dubbo.config.annotation.Service (1.4)、确认web.xml是否成功加载了spring配置文件,重点看dubbo的配置文件是否加载上 如果服务提供者已经注册到了dubbo监控中心 2、检查服务消费者 (2.1)、检查依赖 、检查spring的配置文件、检查 注解@Reference 重启消费者
5.服务提供者出现异常
HTTP Status 500 - Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method findAll in the service com.offcn.sellergoods.service.BrandService. Tried 3 times of the providers [10.10.115.147:20880] (1/1) from the registry 192.168.188.142:2181 on the consumer 10.10.115.147 using the dubbo version 2.6.4. Last error is: Invoke remote method timeout. method: findAll, provider: dubbo://10.10.115.147:20880/com.offcn.sellergoods.service.BrandService?anyhost=true&application=youlexuan_manager_web&check=false&dubbo=2.0.2&generic=false&interface=com.offcn.sellergoods.service.BrandService&methods=findAll&pid=8672®ister.ip=10.10.115.147&remote.timestamp=1592446162160&revision=1.0&side=consumer×tamp=1592446203793, cause: Waiting server-side response timeout. start time: 2020-06-18 10:10:06.748, end time: 2020-06-18 10:10:07.750, client elapsed: 0 ms, server elapsed: 1001 ms, timeout: 1000 ms, request: Request [id=2, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=findAll, parameterTypes=[], arguments=[], attachments={path=com.offcn.sellergoods.service.BrandService, interface=com.offcn.sellergoods.service.BrandService, version=0.0.0}]], channel: /10.10.115.147:51804 -> /10.10.115.147:20880 1、增加服务提供者 的日志配置文件 log4j.properties 放到resources目录下 看到更多日志输出
6.解决服务提供方 QOS错误
[com.alibaba.dubbo.qos.protocol.QosProtocolWrapper] - [DUBBO] Fail to start qos server: , dubbo version: 2.6.4, current host: 10.10.115.147 java.lang.NoClassDefFoundError: io/netty/channel/EventLoopGroup at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.startQosServer(QosProtocolWrapper.java:95) at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:59) at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:55) at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:98) at com.alibaba.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) at com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:513) at com.alibaba.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:358) at com.alibaba.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:317) at com.alibaba.dubbo.config.ServiceConfig.export(ServiceConfig.java:216) at com.alibaba.dubbo.config.spring.S 修改spring配置文件 <dubbo:application name="youlexuan_sellergoods_service"> <dubbo:parameter key="qos.enable" value="false"/> </dubbo:application>
7.dao包,映射文件目录不对
HTTP Status 500 - Request processing failed; nested exception is java.lang.RuntimeException: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.offcn.mapper.TbBrandMapper.selectByExample
解决方法,重新建多层级映射文件存储目录
8.端口被占用
java.net.BindException: Address already in use: JVM_Bind <null>:9101 解决方案: 在windows命令行,输入命令检查被占用端口,所对应进程编号 netstat -a -n -o|findStr 9101 TCP 0.0.0.0:9101 0.0.0.0:0 LISTENING 1672【进程编号】 TCP [::]:9101 [::]:0 LISTENING 1672 使用任务管理器,来结束进程 直接使用命令杀死进程 tskill 进程编号
2020-11-23:
在写前端对后端controller发请求时,遇到404...看看是不是路径有问题..........