DataJdbcSource
This commit is contained in:
@@ -364,7 +364,7 @@ public class HttpDispatcherServlet extends DispatcherServlet<String, HttpContext
|
||||
return;
|
||||
}
|
||||
servlet.execute(request, response);
|
||||
} catch (Exception e) {
|
||||
} catch (Throwable e) {
|
||||
request.getContext().getLogger().log(Level.WARNING, "Dispatch servlet occur exception. request = " + request, e);
|
||||
response.finishError(e);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.redkale.net.sncp;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.logging.Level;
|
||||
import org.redkale.net.DispatcherServlet;
|
||||
import org.redkale.service.Service;
|
||||
import org.redkale.util.*;
|
||||
@@ -82,19 +83,24 @@ public class SncpDispatcherServlet extends DispatcherServlet<Uint128, SncpContex
|
||||
|
||||
@Override
|
||||
public void execute(SncpRequest request, SncpResponse response) throws IOException {
|
||||
if (request.isPing()) {
|
||||
ByteArray array = localArray.get().clear();
|
||||
int headerSize = SncpHeader.calcHeaderSize(request);
|
||||
array.putPlaceholder(headerSize);
|
||||
response.writeHeader(array, 0, 0);
|
||||
response.finish(array.getBytes());
|
||||
return;
|
||||
}
|
||||
SncpServlet servlet = mappingServlet(request.getHeader().getServiceid());
|
||||
if (servlet == null) {
|
||||
response.finish(SncpResponse.RETCODE_ILLSERVICEID, null); //无效serviceid
|
||||
} else {
|
||||
servlet.execute(request, response);
|
||||
try {
|
||||
if (request.isPing()) {
|
||||
ByteArray array = localArray.get().clear();
|
||||
int headerSize = SncpHeader.calcHeaderSize(request);
|
||||
array.putPlaceholder(headerSize);
|
||||
response.writeHeader(array, 0, 0);
|
||||
response.finish(array.getBytes());
|
||||
return;
|
||||
}
|
||||
SncpServlet servlet = mappingServlet(request.getHeader().getServiceid());
|
||||
if (servlet == null) {
|
||||
response.finish(SncpResponse.RETCODE_ILLSERVICEID, null); //无效serviceid
|
||||
} else {
|
||||
servlet.execute(request, response);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
request.getContext().getLogger().log(Level.WARNING, "Dispatch servlet occur exception. request = " + request, e);
|
||||
response.finishError(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3085,6 +3085,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
private <C> void offerConnection(final C connection, Semaphore semaphore, Queue<SourceConnection> queue) {
|
||||
SourceConnection conn = (SourceConnection) connection;
|
||||
if (conn != null) {
|
||||
conn.commiting = false;
|
||||
try {
|
||||
if (checkValid(conn) && queue.offer(conn)) {
|
||||
usingCounter.decrement();
|
||||
@@ -3128,6 +3129,8 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
|
||||
public final Connection conn;
|
||||
|
||||
boolean commiting;
|
||||
|
||||
public SourceConnection(Connection conn, int version) {
|
||||
Objects.requireNonNull(conn);
|
||||
this.conn = conn;
|
||||
@@ -3214,12 +3217,16 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
public void commit() throws SQLException {
|
||||
commiting = true;
|
||||
conn.commit();
|
||||
}
|
||||
|
||||
public void rollback(Statement stmt) {
|
||||
try {
|
||||
conn.rollback();
|
||||
if (commiting) {
|
||||
conn.rollback();
|
||||
commiting = false;
|
||||
}
|
||||
if (stmt != null) {
|
||||
stmt.close();
|
||||
}
|
||||
@@ -3230,7 +3237,10 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
|
||||
public void rollback(List<? extends Statement> stmts) {
|
||||
try {
|
||||
conn.rollback();
|
||||
if (commiting) {
|
||||
conn.rollback();
|
||||
commiting = false;
|
||||
}
|
||||
if (stmts != null) {
|
||||
for (Statement s : stmts) {
|
||||
s.close();
|
||||
@@ -3243,7 +3253,10 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
|
||||
public void rollback(final Statement stmt, List<? extends Statement> stmts) {
|
||||
try {
|
||||
conn.rollback();
|
||||
if (commiting) {
|
||||
conn.rollback();
|
||||
commiting = false;
|
||||
}
|
||||
if (stmt != null) {
|
||||
stmt.close();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user