我正在使用 Spring MVC,并且我有一个具有 HTTP 方法 Post 的端点。
\n\n@ResponseBody\npublic ResponseEntity<Object> request(@RequestBody @Valid RequestPayload requestBody){\n //Code\n}\n\npublic class RequestPayload {\n\n private String op;\n private Collection<Payload> payload;\n //Getter & Setters\n\n}\n\npublic class Payload implements Serializable {\n private Map<String, Object> properties = new HashMap<>();\n //Getter & Setters\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我使用 JSON Sanitizer 和 Jsoup 将其转换为 JSON,然后使用下面的代码再次转换为 Java 类。
\n\nprivate static final ObjectMapper MAPPER = new ObjectMapper();\npublic static <T> T sanitizeHTML(T requestBody, Class<T> klass) {\n if(Objects.nonNull(requestBody)) {\n try {\n return MAPPER.readValue(Jsoup.clean(MAPPER.writeValueAsString(requestBody), Whitelist.none()), klass);\n } catch (IOException …Run Code Online (Sandbox Code Playgroud) 我正在研究一个用例,我创建了将数据从 mongo 发送到 elasticsearch 的管道。
Mongo -> Spring Boot -> Kafka -> Transformer(KStream) -> Kafka -> Consumer(发送到 Elastic Search。)
我必须计算记录从 Mongo 到 Elastic search 所花费的时间。我想到使用 Kafka Headers 并继续在下一个 Kafka Producer 中转发它们的值,最后通过从当前时间戳中减去来计算相同的值。
我可以从生产者发送标头,但如何从 Kafka Streams 发送相同的标头。在下面的代码中,我想发送在消费 inTopic 时获得的标头并将它们发送到 outTopic。
private StreamsBuilder buildStream(final String bootstrapServers, final String inTopic, final String outTopic) {
StreamsBuilder streamsBuilder = new StreamsBuilder();
KStream<String, String> kStream = streamsBuilder.stream(inTopic);
kStream.filter(new Predicate<String, String>() {
public boolean test(String s, String s2) {
return true;
}
})
.to(outTopic);
return streamsBuilder;
}
Run Code Online (Sandbox Code Playgroud) 我试图找出下面提到的代码背后的原因.这里如果我使用匿名内部类创建Thread,它会进入死锁状态但是使用lambda表达式它可以正常工作.我试图找到这种行为背后的原因,但我不能.
public class ThreadCreationTest {
static {
new ThreadCreationTest();
}
private void call() {
System.out.println("Hello guys!!!");
}
public ThreadCreationTest() {
// when we use this thread it goes in deadlock kind of state
Thread thread1 = new Thread(new Runnable() {
public void run() {
call();
}
});
// This one works fine.
Thread thread = new Thread(() -> call());
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
public static void main(String... args) {
System.out.println("Code finished...");
} …Run Code Online (Sandbox Code Playgroud) 我正在使用带有嵌入式 Tomcat 9.0.36 的 Spring Boot。它在 Kubernetes 中用作 Docker 镜像。最近升级 Envoy 后,我开始遇到异常。
"upstream connect error or disconnect/reset before headers. reset reason: connection termination" with 503 status code
Run Code Online (Sandbox Code Playgroud)
有些人建议将空闲连接超时增加到 60 秒,但在 spring-boot 中我能够找到“连接超时”和“保持活动超时”。我使用下面的代码将它们增加到 5 分钟。
"upstream connect error or disconnect/reset before headers. reset reason: connection termination" with 503 status code
Run Code Online (Sandbox Code Playgroud)
尽管如此,我还是遇到了同样的错误。该应用程序在内部调用另一个同样托管在 Kubernetes 中的服务。我可以在我的服务中看到成功的响应,但之后我看不到任何日志。
有两个服务。我正在使用 Netflix 堆栈 [Eureka/zuul]。
当我运行一个用户服务实例时,一切正常,但是当我在另一台服务器上运行另一个实例时,我遇到了下面提到的错误并且请求 [login oauth] 失败。
我想扩展使用 spring oauth 的 USER-SERVICE。
处理错误:InvalidGrantException,无效授权码:Q1j7Hs 06:24:17.253 [http-nio-8081-exec-2] INFO ossopeTokenEndpoint - 处理错误:InvalidGrantException,无效授权码:w9uvl1
任何线索或建议将不胜感激。
java ×3
spring ×2
apache-kafka ×1
checkmarx ×1
istio ×1
java-8 ×1
kubernetes ×1
lambda ×1
oauth ×1
sanitization ×1
spring-boot ×1
tomcat ×1
xss ×1