docs: public BaseMessage sendMessageRequest(BaseMessage messageOut)
      {
          String strTrxID = null;
          try {
              // Create a message from the message factory.
              String strXmlMessageOut = messageOut.getExternalMessage().toString();
              // Create an endpoint for the recipient of the message.
              TrxMessageHeader trxMessageHeader = (TrxMessageHeader)messageOut.getMessageHeader();
              String strDest = (String)trxMessageHeader.get(TrxMessageHeader.DESTINATION_PARAM);
              String strMsgDest = (String)trxMessageHeader.get(TrxMessageHeader.DESTINATION_MESSAGE_PARAM);
              if (strMsgDest != null)
                  strDest = strDest + strMsgDest;
              strTrxID = (String)trxMessageHeader.get(TrxMessageHeader.LOG_TRX_ID);
  
              URL url = new URL(strDest);
              Properties properties = new Properties();
              properties.setProperty("xml", strXmlMessageOut);
              // Send the message to the provider using the connection.
              // Create a message from the message factory.
  //x            msg.setProperty(SOAPMessage.WRITE_XML_DECLARATION, DBConstants.TRUE);
  //x            msg.getMimeHeaders().setHeader("Content-Type", "text/xml");
  
              ServletMessage servlet = new ServletMessage(url);
              InputStream in = servlet.sendMessage(properties);
  
              this.logMessage(strTrxID, messageOut, MessageInfoTypeModel.REQUEST, MessageTypeModel.MESSAGE_OUT, MessageStatusModel.SENT, null, null);
              
              InputStreamReader reader = new InputStreamReader(in);
              BufferedReader buffReader = new BufferedReader(reader);
              StringBuffer sbReply = new StringBuffer();
              while (true)
              {
                  String str = buffReader.readLine();
                  if ((str == null) || (str.length() == 0))
                      break;
                  if (sbReply.length() > 0)
                      sbReply.append("\n");
                  sbReply.append(str);
              }
              if (sbReply.length() > 0)
              {
                  BaseMessage messageReply = new TreeMessage(null, null);
                  new XmlTrxMessageIn(messageReply, sbReply.toString());
                  return messageReply;
              } else {
                  System.err.println("No reply");
              }
          } catch(Throwable ex) {
              ex.printStackTrace();
              String strErrorMessage = ex.getMessage();
              this.logMessage(strTrxID, messageOut, MessageInfoTypeModel.REQUEST, MessageTypeModel.MESSAGE_OUT, MessageStatusModel.ERROR, strErrorMessage, null);
              return BaseMessageProcessor.processErrorMessage(this, messageOut, strErrorMessage);
          }            
  
          return null;
      }