@Override
 public byte[] getServiceInfo(
     ServiceParameterBuffer serviceParameterBuffer,
     ServiceRequestBuffer serviceRequestBuffer,
     int maxBufferLength)
     throws SQLException {
   try {
     final byte[] serviceParameterBufferBytes =
         serviceParameterBuffer == null ? null : serviceParameterBuffer.toBytesWithType();
     final byte[] serviceRequestBufferBytes =
         serviceRequestBuffer == null ? null : serviceRequestBuffer.toBytes();
     final ByteBuffer responseBuffer = ByteBuffer.allocateDirect(maxBufferLength);
     synchronized (getSynchronizationObject()) {
       clientLibrary.isc_service_query(
           statusVector,
           handle,
           new IntByReference(0),
           (short) (serviceParameterBufferBytes != null ? serviceParameterBufferBytes.length : 0),
           serviceParameterBufferBytes,
           (short) (serviceRequestBufferBytes != null ? serviceRequestBufferBytes.length : 0),
           serviceRequestBufferBytes,
           (short) maxBufferLength,
           responseBuffer);
       processStatusVector();
     }
     byte[] responseArray = new byte[maxBufferLength];
     responseBuffer.get(responseArray);
     return responseArray;
   } catch (SQLException e) {
     exceptionListenerDispatcher.errorOccurred(e);
     throw e;
   }
 }
 @Override
 public void startServiceAction(ServiceRequestBuffer serviceRequestBuffer) throws SQLException {
   try {
     final byte[] serviceRequestBufferBytes =
         serviceRequestBuffer == null ? null : serviceRequestBuffer.toBytes();
     synchronized (getSynchronizationObject()) {
       clientLibrary.isc_service_start(
           statusVector,
           handle,
           new IntByReference(0),
           (short) (serviceRequestBufferBytes != null ? serviceRequestBufferBytes.length : 0),
           serviceRequestBufferBytes);
       processStatusVector();
     }
   } catch (SQLException e) {
     exceptionListenerDispatcher.errorOccurred(e);
     throw e;
   }
 }