seata 踩坑記錄


seata 啟動

啟動腳本里面指定了 CMS 並行收集器,所以我們需要指定啟動 jdk 為 jdk8。
windows 環境在 seata-server.bat 里面配置 JAVACMD 變量,linux 就修改 seata-server.sh

set JAVACMD=C:\JDK\jdk-8\bin\java.exe

項目添加 seata 啟動報錯

SeataRestTemplateAutoConfiguration.class 循環依賴錯誤,我們可以看到 他自己注入 SeataRestTemplateInterceptor bean,而這個 bean 又是在自己內部創建的。

解決方案:
Spring 啟動排除 SeataRestTemplateAutoConfiguration.class 配置類,自己手動重寫配置類,給注入配置成懶加載模式

// 啟動指定排除 SeataRestTemplateAutoConfiguration.class 配置類
@SpringBootApplication(exclude = SeataRestTemplateAutoConfiguration.class)

項目執行 sql 報 jackson 數據綁定錯誤 com.fasterxml.jackson.databind.exc.InvalidDefinitionException

解決方案:
方案一:數據庫涉及的所有表的 datetime 的數據類型調整為 timestamp,明顯不現實。timestamp是 1970-01-01 00:00:00到 2037 年。
方案二:seta 客戶端修改序列化方式為 kryo , 添加相關引用

client.undo.logSerialization = kryo
<dependency>
	<groupId>com.esotericsoftware</groupId>
	<artifactId>kryo</artifactId>
	<version>4.0.2</version>
</dependency>
<dependency>
	<groupId>de.javakaffee</groupId>
	<artifactId>kryo-serializers</artifactId>
	<version>0.42</version>
</dependency>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM