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