compatible/README.md
Starting from version 2.1.x, Seata's package name has been changed from io.seata to org.apache.seata.
The seata-all compatibility module provides comprehensive backward compatibility support for APIs under the legacy io.seata package. This allows users to gradually migrate to the new org.apache.seata package without modifying existing code.
io.seata.core.context.RootContextAPI for managing global transaction context information.
Main Methods:
getXID() - Get the current global transaction IDbind(String xid) - Bind a global transaction IDunbind() - Unbind the global transaction IDinGlobalTransaction() - Check if in a global transactiongetBranchType() - Get the branch transaction typebindBranchType(BranchType branchType) - Bind branch transaction typegetTimeout() - Get global transaction timeoutsetTimeout(Integer timeout) - Set global transaction timeoutbindGlobalLockFlag() / unbindGlobalLockFlag() - Manage global lock flagrequireGlobalLock() - Check if global lock is requiredinTccBranch() - Check if in TCC branchinSagaBranch() - Check if in SAGA branchUsage Example:
import io.seata.core.context.RootContext;
// Get global transaction ID
String xid = RootContext.getXID();
// Check if in global transaction
if (RootContext.inGlobalTransaction()) {
// Handle global transaction logic
}
io.seata.rm.RMClientResource Manager (RM) client for initializing and managing resource managers.
Main Features:
io.seata.tm.TMClientTransaction Manager (TM) client for initializing and managing transaction managers.
Main Features:
Usage Example:
import io.seata.tm.TMClient;
import io.seata.rm.RMClient;
// Initialize TM and RM clients
TMClient.init("seata-tm", "default");
RMClient.init("seata-rm", "default");
io.seata.spring.annotation.GlobalTransactionalAnnotation for marking global transaction methods.
Main Attributes:
name - Global transaction nametimeoutMills - Global transaction timeout (milliseconds)rollbackFor - Specify exception types to trigger rollbacknoRollbackFor - Specify exception types that should not trigger rollbackpropagation - Transaction propagation strategylockRetryInterval - Global lock retry intervallockRetryTimes - Global lock retry timeslockStrategyMode - Global lock strategy mode (Pessimistic/Optimistic)Usage Example:
import io.seata.spring.annotation.GlobalTransactional;
@GlobalTransactional(name = "createOrder", rollbackFor = Exception.class)
public void createOrder(Order order) {
// Business logic
}
io.seata.spring.annotation.GlobalLock - Global lock annotationio.seata.spring.annotation.LocalLock - Local lock annotationio.seata.rm.datasource.DataSourceProxyDataSource proxy class for intercepting SQL statements and implementing automatic rollback in AT mode.
Main Methods:
getConnection() - Get proxy connectiongetTargetDataSource() - Get target data sourcegetBranchType() - Get branch transaction typeUsage Example:
import io.seata.rm.datasource.DataSourceProxy;
@Bean
public DataSourceProxy dataSourceProxy(DataSource dataSource) {
return new DataSourceProxy(dataSource);
}
io.seata.core.model.BranchTypeEnumeration for branch transaction types.
Available Values:
AT - Auto Transaction (Automatic Compensation)TCC - Try-Confirm-Cancel (Two-Phase Confirmation)SAGA - Event-driven Distributed Transaction ProcessingXA - X/Open Architecture Distributed Transactionio.seata.core.model.GlobalStatusEnumeration for global transaction status.
Available Values:
Begin - Transaction startedCommitting - Transaction committingCommitted - Transaction committedCommitFailed - Transaction commit failedRolling - Transaction rolling backRollbacked - Transaction rolled backRollbackFailed - Transaction rollback failedio.seata.common.LockStrategyModeGlobal lock strategy mode.
Available Values:
PESSIMISTIC - Pessimistic lock (default)OPTIMISTIC - Optimistic lockio.seata.core.exception.TransactionExceptionBase class for transaction exceptions.
io.seata.core.exception.TransactionExceptionCodeEnumeration for transaction exception codes.
Main Exception Codes:
BeginFailed - Transaction begin failedCommitFailed - Transaction commit failedRollbackFailed - Transaction rollback failedTimeoutRollback - Timeout rollbackBranchTransactionNotExist - Branch transaction does not existio.seata.core.serializer.SerializerInterface for implementing custom serialization methods.
Supported Serializers:
SeataSerializer - Seata default serializerProtoStuffSerializer - Protobuf serializerKryoSerializer - Kryo serializerHessianSerializer - Hessian serializerio.seata.core.compressor.CompressorInterface for implementing data compression functionality.
Supported Compression Algorithms:
Gzip - GZIP compressionDeflater - Deflater compressionLZ4 - LZ4 compressionBzip2 - Bzip2 compressionZstd - Zstandard compressionio.seata.discovery.registry.RegistryServiceService registration and discovery interface.
io.seata.discovery.registry.RegistryProviderSPI interface for service registry providers.
Supported Registry Centers:
Nacos - Nacos registryEureka - Eureka registryConsul - Consul registryZooKeeper - ZooKeeper registryetcd3 - etcd v3 registryio.seata.core.config.ConfigurationProviderSPI interface for configuration providers.
Supported Configuration Centers:
Nacos - Nacos configuration centerApollo - Apollo configuration centerZooKeeper - ZooKeeper configuration centerConsul - Consul configuration centeretcd3 - etcd v3 configuration centerio.seata.rm.tcc.api.BusinessActionContextBusiness operation context for passing context information in TCC mode.
io.seata.rm.tcc.api.LocalTCCAnnotation for marking TCC business interfaces.
io.seata.rm.tcc.api.TwoPhaseBusinessActionAnnotation for marking Try, Confirm, and Cancel methods in two-phase business operations.
Usage Example:
import io.seata.rm.tcc.api.LocalTCC;
import io.seata.rm.tcc.api.TwoPhaseBusinessAction;
import io.seata.rm.tcc.api.BusinessActionContext;
@LocalTCC
public interface OrderService {
@TwoPhaseBusinessAction(name = "createOrder", commitMethod = "confirmCreateOrder",
rollbackMethod = "cancelCreateOrder")
boolean createOrder(BusinessActionContext context, Order order);
boolean confirmCreateOrder(BusinessActionContext context, Order order);
boolean cancelCreateOrder(BusinessActionContext context, Order order);
}
io.seata.saga.engine.StateMachineEngineState machine execution engine.
io.seata.saga.engine.StateMachineConfigState machine configuration.
io.seata.saga.statelang.domain.StateBase class for SAGA states.
Usage Example:
import io.seata.saga.engine.StateMachineEngine;
@Bean
public StateMachineEngine stateMachineEngine() {
// Configure state machine engine
return stateMachineEngineImpl;
}
io.seata.integration.tx.api.interceptor.parser.InterfaceParserInterface parser for parsing RPC call interface information.
io.seata.integration.http.TransactionPropagationInterceptorHTTP transaction propagation interceptor for propagating global transaction IDs in HTTP requests.
Usage Example:
import io.seata.integration.http.TransactionPropagationInterceptor;
@Bean
public TransactionPropagationInterceptor transactionPropagationInterceptor() {
return new TransactionPropagationInterceptor();
}
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
<version>2.x.x</version>
</dependency>
Existing code using APIs from the io.seata.* package does not need to be modified. The system will automatically forward calls to the new org.apache.seata.* package.
It is recommended to gradually replace io.seata.* imports in your code with org.apache.seata.* to gain access to the latest features and optimizations.
@Deprecated, and gradual migration to the org.apache.seata.* package is recommended.org.apache.seata.* package.