重要提示:此文章将持续更新,建议收藏


1、java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR

原因: 使用tomcat7调整协议从http到https后,启动tomcat时报的错,原本protocol写的是HTTP/1.1
解决: tomcat7默认使用的是APR协议,更改8443端口的protocol协议为org.apache.coyote.http11.Http11Protocol

修改conf/server.xml

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
    disableUploadTimeout="true" enableLookups="false" maxThreads="150"
    port="8443" keystoreFile="D:\java_code\tomcat\tomcat.keystore" keystorePass="1q2w3e4r"
    protocol="org.apache.coyote.http11.Http11Protocol" scheme="https"
    secure="true" sslProtocol="TLS" />

2、org.hibernate.InstantiationException: No default constructor for entity: : com.su.shoppingb.domain.Cart

解决:


3、java.nio.charset.MalformedInputException: Input length = 1 或者java.nio.charset.MalformedInputException: Input length = 2

解决: application.yml中 编码格式问题,重设为GBK即可;整个项目是UTF-8

mybatis: mapper-locations: classpath:/mappers/*.xml 填写完整


4、在mapper.xml中,resultType指向实体类,select出的结果别名要和实体类字段一样


5、Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)

解决: 无关紧要不理会,或者在templates目录下添加文件即可解决


6、保存用户时,java.sql.SQLSyntaxErrorException: Table ‘wx_driving.hibernate_sequence’ doesn’t exist

解决: 在该实体类的主键上加上
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)


7、微信小程序前端获取手机号信息时,“getPhoneNumber:fail Error: 该 appid 没有权限”

解决: 小程序号需要企业注册小程序并认证


8、HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@7bd3fbc (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.

解决:
在application.xml中添加spring.datasource.hikari
hikari:
connection-timeout: 60000
validation-timeout: 3000
idle-timeout: 60000
login-timeout: 5
max-lifetime: 60000
maximum-pool-size: 10
minimum-idle: 10
read-only: false
添加连接生命周期


9、后端服务换了新的appid后,获取openid出现 {“errcode”:40029,“errmsg”:“invalid code, hints: [ req_id: 0Hga3aMre- ]”}

解决: 前端和后端统一使用新的appid和appsecret


11、获取手机号时,调接口:org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter ‘encryptedData’ is not present

解决: 前端请求加: header: {
“Content-Type”: “application/x-www-form-urlencoded”
},


12、java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/CBC/PKCS7Padding

解决: AES/CBC/PKCS7Padding改成AES/CBC/PKCS5Padding


13、启用https org.springframework.context.ApplicationContextException: Failed to start bean ‘webServerStartStop’; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server

解决: springboot2.x没有EmbeddedServletContainerFactory,已替换为TomcatServletWebServerFactory 添加以下代码:

@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
    return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
        @Override
        public void customize(ConfigurableWebServerFactory factory) {
            factory.setPort(443);
        }
    };
}
/**
* @Description:  将http重定向至https
* @param: "[]"
* @Return: org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory
* @Author: supenghui
* @Date: 2021/1/18 12:46
*/
@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory(){
    TomcatServletWebServerFactory tomcat =new TomcatServletWebServerFactory(){
        @Override
        protected void postProcessContext(Context context) {
            SecurityConstraint securityConstraint=new SecurityConstraint();
            securityConstraint.setUserConstraint("CONFIDENTIAL");
            SecurityCollection collection=new SecurityCollection();
            collection.addPattern("/");
            securityConstraint.addCollection(collection);
            context.addConstraint(securityConstraint);
        }
    };
    tomcat.addAdditionalTomcatConnectors(createHttpConnector());
    return tomcat;
}
private Connector createHttpConnector() {
    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setSecure(false);
    connector.setPort(80);
    connector.setRedirectPort(443);
    return connector;
}

14、测试微信小程序使用高德地图出现 fail url not in domain list

解决: 使用高德地图服务,需要把高的域名加到request中;域名: https://restapi.amap.com


15、各种图案的样式:https://css-tricks.com/the-shapes-of-css/


16、org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process ‘remove’ call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process ‘remove’ call

解决: 由于在需要事务的方法上,没有开启事务,所在在方法上添加@Transactional


17、Error No.1130 Host ‘192.168.25.3’ is not allowed to connect to this MySQL server

解决:

  1. 改表法
    可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑登入MySQL后,更改"MySQL"数据库"user"表里的"host"项,将"localhost"改成"%"
    mysql -u root -pyourpwd
    mysql>use mysql;
    mysql>update user set host = ‘%’ where user =‘root’;
    mysql>select host, user from user;

18、调用微信支付接口时,total_fee必须为Integer


19、解决feign.RetryableException: Read timed out/java.net.SocketTimeoutException: Read timed out

application.yml中添加以下配置:

#更改连接和读取超时时间
feign:
  client:
    config:
      default:
        connectTimeout: 300000
        readTimeout: 300000

20、解决c.netflix.discovery.TimedSupervisorTask : task supervisor timed out

原因分析

项目启动初始化时,会启动两个定时任务,一个是向eureka注册,即心跳的线程,另一个是从eureka获取服务注册列表,即刷新注册列表缓存的线程,上述两个线程都是每30s执行一次,默认超时时间都为30s,所以当30s未执行完该任务是,便会抛出Timeout的异常。发送心跳的任务比较简单,一般不会超时。而获取注册列表的任务,耗时较久。
解决:
由于注册中心是所有服务通信的基础,所以部署在多个服务器的应用在通信时可能会比较耗时,往往会发生超时。

application.yml中添加以下配置:

eureka:
  client:
    registry-fetch-interval-seconds: 30  #更改注册表获取间隔时间

author:su1573
鄙人记录生活点滴,学习并分享,请多指教!!!