code: @Override
      public String invoke(Object connection, String request, int timeout, Map<String,String> metainfo)
      throws ConnectionException, AdapterException {
          String response;
          try{
              if (timeout<=0) timeout = DEFAULT_TIMEOUT;
              SoccomClient client = (SoccomClient)connection;
              client.putreq(request);
              response = client.getresp(timeout);
          } catch (SoccomException ex){
              if (ex.getErrorCode()==SoccomException.POLL_TIMEOUT)
                  throw new ConnectionException(ConnectionException.CONNECTION_DOWN, ex.getMessage(), ex);
              else throw new AdapterException(-1, ex.getMessage(), ex);
          }
          return response;
      }
docs: This method must be implemented for PoolableAdapter