Tag Archives: java

Fastjson Error: Error: Cannot create inner bean ‘org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

Error: Cannot create inner bean ‘org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#0

The spring-mvc.xml configuration file is written like this

 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                 <property name="objectMapper">
                     <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                         <property name="failOnEmptyBeans" value="false"/>
                     </bean>
                 </property>
             </bean>

reason:

Only the fastjosn dependency is imported, and the following dependency is not imported

 <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
             <version>2.12.4</version>
         </dependency>

These three jar packages are missing from the generated package

jackson-annotations-2.12.4.jar jackson-databind-2.12.4.jar jackson-core-2.12.4.jar

The problem is solved after importing dependencies.

How to Solve Error: No suitable driver found for

No suitable driver found for jdbc:mysql:localhost:mysql when using JDBC to connect to MySQL database
MySQL version: 8.0.26
Change the driver to:
“jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai”

import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Connection conn = null;
        try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai","root","dcc12345");
            System.out.println("数据库连接成功");

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
}

The writing method of the new version of MySQL driver is different from that of the previous version. Jar package 8.0. * everything is common

OpenFeign Error: {“code“:1,“msg“:“JSON parse error: Illegal character ((CTRL-CHAR, code 31))

Error Messages: [{“code”:1,”msg”:”JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonPars… (401 bytes)]
Error:

2021-10-18 20:39:15.514 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] {"fileName":"9e43ef61.png","fileBase64":"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"}
2021-10-18 20:39:15.530 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] ---> END HTTP (26027-byte body)
2021-10-18 20:39:15.575 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] <--- HTTP/1.1 500 Internal Server Error (46ms)
2021-10-18 20:39:15.576 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] cache-control: no-cache, no-store, max-age=0, must-revalidate
2021-10-18 20:39:15.576 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] connection: close
2021-10-18 20:39:15.576 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] content-type: application/json
2021-10-18 20:39:15.576 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] date: Mon, 18 Oct 2021 12:39:15 GMT
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] expires: 0
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] pragma: no-cache
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] x-content-type-options: nosniff
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] x-frame-options: DENY
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] x-xss-protection: 1; mode=block
2021-10-18 20:39:15.578 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] 
2021-10-18 20:39:15.578 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] {"code":1,"msg":"JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens\n at [Source: (PushbackInputStream); line: 1, column: 2]","total":0,"data":null}
2021-10-18 20:39:15.578 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] <--- END HTTP (401-byte body)
feign.FeignException$InternalServerError: [500 Internal Server Error] during [POST] to [http://jumper-rbac/system/upload/fileBase64] [FeignQiNiuService#fileBase64(Map)]: [{"code":1,"msg":"JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonPars... (401 bytes)]
	at feign.FeignException.serverErrorStatus(FeignException.java:231)

Reference log:

code:

Interface scenario: the data transmitted by the body is relatively large. Gzip compression has been used.

Error analysis reason: the message content is large, and some of them have not been transmitted in the past. Therefore, JSON parsing reports an error.

Openfeign uses the httpurlconnection provided by JDK by default. We know that httpurlconnection has no connection pool and its performance and efficiency are relatively low. If the default is adopted, it is likely to encounter performance problems and lead to system failure.

Solution:

Change to okhttpclient mode:

feign.okhttp.enabled=true

ribbon.okhttp.enabled=true

Result: the interface is called normally. As shown below:

Add: it is said on the Internet that the combination of @ getmapping method and @ ResponseBody will report errors. I wrote a test interface filebase (such as the code posted above). The @ getmapping method used with @ ResponseBody has no impact@ The restcontroller interface has the annotation of @ ResponseBody (as shown in the figure below).

The operation results are shown in the following two figures:

[Solved] WebFlux Error: DataBufferLimitException: Part headers exceeded the memory usage limit of 8192 bytes

Question:

An error occurs when Webflux uploads a file:

14:32:24.628 [61667d78915db10adaa025b4da32871f/daa025b4da32871f] [reactor-http-epoll-4] ERROR o.s.w.s.a.HttpWebHandlerAdapter - [7161d1a8-33] 500 Server Error for HTTP POST "/api/XXXXX/XXXXX"
org.springframework.core.io.buffer.DataBufferLimitException: Part headers exceeded the memory usage limit of 8192 bytes
        at org.springframework.http.codec.multipart.MultipartParser$HeadersState.onNext(MultipartParser.java:360)
        Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
        |_ checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authentication.AuthenticationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authentication.AuthenticationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.cloud.sleuth.instrument.web.TraceWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ HTTP POST "/api/iot/notice/add" [ExceptionHandlingWebHandler]
Stack trace:
                at org.springframework.http.codec.multipart.MultipartParser$HeadersState.onNext(MultipartParser.java:360)
                at org.springframework.http.codec.multipart.MultipartParser.hookOnNext(MultipartParser.java:104)
                at org.springframework.http.codec.multipart.MultipartParser.hookOnNext(MultipartParser.java:46)
                at reactor.core.publisher.BaseSubscriber.onNext(BaseSubscriber.java:160)
                at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:90)
                at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
                at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:90)
                at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:199)
                at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:90)
                at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
                at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:265)
                at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:371)
                at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:381)
                at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:535)
                at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:94)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:252)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
                at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
                at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311)
                at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432)
                at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
                at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
                at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795)
                at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:388)
                at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
                at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
                at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:384)
                at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
                at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
                at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
                at java.lang.Thread.run(Thread.java:882)

reason:

You can only upload files with a maximum size of 8KB, which exceeds the limit and cannot be uploaded normally

Solution:

Method I (not effective):

Direct setting    max-in-memory-size   It can take effect

spring:
  codec:
    max-in-memory-size: 100MB

However, the above code does not take effect in the spring 2.X.x version. The official said it was solved. It is estimated that it was solved in the later version, but the project has been produced. It is certainly impossible to change the version now, so we have to find another way. During his startup, debug found that it was set to 262144 when initializing the code:

Method II:

Configure configuration. In the configuration class of webfluxconfigurer in implements, implement configurehttpmessagecodes for configuration. The example is as follows


import org.springframework.context.annotation.Configuration;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.http.codec.multipart.DefaultPartHttpMessageReader;
import org.springframework.http.codec.multipart.MultipartHttpMessageReader;
import org.springframework.web.reactive.config.WebFluxConfigurer;

@Configuration
public class WebConfig implements WebFluxConfigurer {

    @Override
    public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
        DefaultPartHttpMessageReader partReader = new DefaultPartHttpMessageReader();
        // 9 KiB, default is 8 KiB
        partReader.setMaxHeadersSize(100*1024*1024);
        partReader.setEnableLoggingRequestDetails(true);

        MultipartHttpMessageReader multipartReader = new MultipartHttpMessageReader(partReader);
        multipartReader.setEnableLoggingRequestDetails(true);

        configurer.defaultCodecs().multipartReader(multipartReader);

    }
}

Done!

[Solved] Hongmeng compiles error: Unable to find the java component with apiVersion 4.

Problem phenomenon

SdkError: DOWNLOAD_SDK_ERROR
	 > Cause: Unable to find the java component with apiVersion 4.
	 > Solution: 
		1.Open SDK Manager and download java.
		2.Alternatively, modify the compileSdkVersion settings in the project- and module-level build.gradle files. 

Solution

Modify the build.gradle file:

ohos {
    compileSdkVersion 4
    defaultConfig {
        compatibleSdkVersion 3
    }
}

Change to:

ohos {
    compileSdkVersion 5
    defaultConfig {
        compatibleSdkVersion 3
    }
}

[Solved] Spring Cloud Use Ribbon Error: No instances available for XXX

Question

After configuring load balancing, start springboot and report an error

reason

The version difference of jar
I first used ribbon and Eureka. When I added them, I didn’t notice that the following two versions were abandoned

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-ribbon</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>

Solution:

The dependency of replacing the Eureka registry module is

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>3.0.4</version>
        </dependency>

The dependency of replacing the service provider and consumer modules is
the ribbon required by the consumer module has been built-in compatible with the latest version of Eureka

         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>3.0.4</version>
        </dependency>

Mybatis Error: Invalid bound statement (not found)

When starting the project today, the spring boot reported an error.

This error is reported because the mapper file has not been scanned.

Why didn’t you scan it?

Cause analysis

    1. incorrect namespace method undefined: the method in mapper.xml is not defined in the Java class. The return value is incorrect: the return value of the method in the Java class is different from the return value in the XML file (resultmap or resulttype). The configuration path is incorrect: is the configuration path of the mapper file correct




The error reason of my project is the fourth: the configuration path of mapper file is incorrect

The path I configured in the project is: all XML files under the mapper folder and its subfolders.

However, my project doesn’t have a mapper folder at all

Just looking at this folder, I don’t know whether it is a primary directory or a hierarchical directory.

When I created a new folder, I entered it in one breath

Although the name of the folder is written correctly, the name of the folder is mapper.subnet

In this case, there is no mapper folder at all, so it will not be able to match.

[Solved] Solr8 establishes the cluster node as active, but the query reports an error

Error Messages:

{
    "error": {
        "code": 500,
        "metadata": [
            "error-class",
            "org.apache.solr.common.SolrException",
            "root-error-class",
            "java.io.IOException"
        ],
        "msg": "org.apache.solr.client.solrj.SolrServerException: No live SolrServers available to handle this request:[http://10.17.6.141:8080/solr/collection2_shard2_replica_n5, http://10.17.6.143:8080/solr/collection2_shard2_replica_n4, http://10.17.6.141:8080/solr/collection2_shard1_replica_n1]",
        "trace": "org.apache.solr.common.SolrException: org.apache.solr.client.solrj.SolrServerException: No live SolrServers available to handle this request:[http://10.17.6.141:8080/solr/collection2_shard2_replica_n5, http://10.17.6.143:8080/solr/collection2_shard2_replica_n4, http://10.17.6.141:8080/solr/collection2_shard1_replica_n1]
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:412)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
    at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
    at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.solr.client.solrj.SolrServerException: No live SolrServers available to handle this request:[http://10.17.6.141:8080/solr/collection2_shard2_replica_n5, http://10.17.6.143:8080/solr/collection2_shard2_replica_n4, http://10.17.6.141:8080/solr/collection2_shard1_replica_n1]
    at org.apache.solr.client.solrj.impl.LBSolrClient.request(LBSolrClient.java:345)
    at org.apache.solr.handler.component.HttpShardHandlerFactory.makeLoadBalancedRequest(HttpShardHandlerFactory.java:308)
    at org.apache.solr.handler.component.HttpShardHandler.lambda$submit$0(HttpShardHandler.java:190)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:181)
    at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:209)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more
Caused by: org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: null
    at org.apache.solr.client.solrj.impl.Http2SolrClient.request(Http2SolrClient.java:416)
    at org.apache.solr.client.solrj.impl.Http2SolrClient.request(Http2SolrClient.java:739)
    at org.apache.solr.client.solrj.impl.LBSolrClient.doRequest(LBSolrClient.java:368)
    at org.apache.solr.client.solrj.impl.LBSolrClient.request(LBSolrClient.java:296)
    ... 10 more
Caused by: java.io.IOException: 6/invalid_frame_length
    at org.eclipse.jetty.http2.HTTP2Session.onConnectionFailure(HTTP2Session.java:540)
    at org.eclipse.jetty.http2.HTTP2Session.onConnectionFailure(HTTP2Session.java:535)
    at org.eclipse.jetty.http2.parser.Parser$Listener$Wrapper.onConnectionFailure(Parser.java:410)
    at org.eclipse.jetty.http2.HTTP2Connection$ParserListener.onConnectionFailure(HTTP2Connection.java:374)
    at org.eclipse.jetty.http2.parser.BodyParser.notifyConnectionFailure(BodyParser.java:218)
    at org.eclipse.jetty.http2.parser.BodyParser.connectionFailure(BodyParser.java:210)
    at org.eclipse.jetty.http2.parser.Parser.connectionFailure(Parser.java:205)
    at org.eclipse.jetty.http2.parser.Parser.parseHeader(Parser.java:151)
    at org.eclipse.jetty.http2.parser.Parser.parse(Parser.java:117)
    at org.eclipse.jetty.http2.HTTP2Connection$HTTP2Producer.produce(HTTP2Connection.java:252)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produceTask(EatWhatYouKill.java:357)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:181)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)
    at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:171)
    at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:126)
    at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:338)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
    at org.eclipse.jetty.util.thread.Invocable.invokeNonBlocking(Invocable.java:68)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.invokeTask(EatWhatYouKill.java:345)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:300)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)
    ... 4 more
"
    },
    "responseHeader": {
        "QTime": 44,
        "params": {
            "_": "1585620400234",
            "q": "*:*"
        },
        "status": 500,
        "zkConnected": true
    }
}

 

Solution:
solr8 uses the http2 protocol.
JAVA_OPTS add -Dsolr.http1=true to it and it will work.

After asynchronous file import and springboot multipartfile upload, the @async asynchronous processing reports an error: nosuchfileexception

First question

When there is a large amount of data in Excel, the process of Java background parsing may take a long time, but users do not need to wait. At this time, consider the asynchronous import of files

There are several ways to implement the file asynchronous method. Here, it is implemented by specifying the asynchronous thread pool, that is, @ async (“thread pool name”) annotates the asynchronous method.

However, after testing, it is found that the annotations of this annotation are also annotated, but the asynchronous effect cannot be realized.

After several twists and turns, it is found that asynchronous methods can call non asynchronous methods, which can achieve asynchronous effect; First, non asynchronous methods call asynchronous methods, which will fail. What is said here is in the same Java class.

In different Java classes, the above problems do not exist

The second problem
uses the asynchronous method to receive files through the controller and process them in the service layer. At this time, the controller has returned the results of successful execution. The rest is to analyze and store them in the service layer. Unexpectedly, an error is reported in the service

java.nio.file.NoSuchFileException: D:\UserData\Temp\undertow.1407321862395783323.8400\undertow4517937229384702645upload

Methods in controller

@PostMapping("/test")
public R<String> test(MultipartFile file) {
	testService.test(file);
	return R.success("successful to import");
}

Methods in service

@Async("asyncImportExecutor")
public void test(MultipartFile file) {
    try {
        EasyExcelUtil.read(file.getInputStream(), Test.class, this::executeImport)
                    .sheet().doRead();
    } catch (Exception ex) {
        log.error("[test]Asynchronous import exceptions:", ex);
    }
}

When I saw this exception nosuchfileexception, I was stunned. The test was conducted through postman, so I began to suspect the problem of postman. After troubleshooting, there was no problem with postman and path, and the asynchronous call process was OK

Then think of the abnormal prompt, that is, the file can not be found. According to the printed log, it can’t be found locally. Then there was the following writing

Methods in controller

@PostMapping("/test")
public R<String> test(MultipartFile file) {
	try {
		testService.test(file.getInputStream());
	} catch (IOException e) {
		log.error("[test]Exception log:", e);
		return R.fail("Import failed");
	}
	return R.success("Import successful");
}

Methods in service

@Async("asyncImportExecutor")
public void test(InputStream file) {
    try {
        EasyExcelUtil.read(file, Test.class, this::executeImport)
                    .sheet().doRead();
    } catch (Exception ex) {
        log.error("[test]Asynchronous import exceptions:", ex);
    }
}

So you don’t report mistakes
later, I debugged and found that the temporary file was generated by the multipartfile object in the controller layer. I had been writing the synchronization method, and I didn’t notice that the multipartfile object would generate a temporary file. Later, it was found that after the result returned in the controller, there was no temporary file.

Error summary:
because the asynchronous method is used, there will be a main thread and an asynchronous thread. After uploading a file, an instance of multipartfile type will be formed and a temporary file will be generated. At this time, it is in the main thread. After the instance of multipartfile is handed over to the asynchronous thread for processing, the temporary file will be destroyed by springboot (spring). The above exception will appear when you go to getinputstream in the asynchronous thread.

The following method is to take the InputStream stream as the input parameter, so the file cannot be found.

How to Solve Linux connecte to the old version of SQL Server Error

Most methods of online search can’t help me
the errors are as follows:
the server selected protocol version tls10 is not accepted by client preferences [tls12]
in the root directory of Java (mine is 1.8), the jdk11 will find the security file under conf, and there is a java.security file under JRE/lib/security, The jdk.tls.disabledalgorithms configuration in this file will disable the tls1.0 version of the transport protocol. At this time, we need to close the protocol and delete tls1.0. Of course, deletion under this file is useless. Most posts on the Internet also say that it is impossible to change this file. Therefore, the following methods are used, Create a new empty file and paste it as follows:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
 DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
 include jdk.disabled.namedCurves```
Save it and run the java project:

```bash
-Djava.security.properties=xxx

The above parameters determine the location of the new file. At this time, the error can be solved.