Bom, após um experiência terrível migrando o meu ambiente de desenvolvimento do XP para o Windows Vista; devido à minha nova máquina,  onde fui forçado a atualizar a minha versão de desenvolvimento do Apache 1.3 para o Apache 2.x, pois, não consegui fazer o Apache 1.3 rodar com o Windows Vista.  Caso queira detalhes da instalação do Apache no Vista veja o artigo anterior.

Agora com o Apache 2.x rodando tenho que reconfigurar o meu antigo projeto Intraweb para rodar no Apache 2.2 agora. Esse processo atrasou um pouco meu trabalho, mas, na verdade, estava precisando mesmo atualizar, visto que o Apache 2.x tem muitas novidades e correções em relação à versão que utilizávamos antes; então, mãos à obra e, nada de preguiça.

Mais uma vez o Dr.Bob’s Delphi Clinic (fera no assunto Delphi) tinha uma solução (ou quase); na verdade o artigo do Dr.Bob já está desatualizado,vai até o Apache 2.06; mas, ele deu o “caminho das pedras”; para a versão 2.2 existem mais alguns procedimentos que serão citados abaixo e, foram obtidos à partir do endereço: http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=borland.public.delphi.webservices.soap&messageid=1159712929.371031.8670@i3g2000cwc.googlegroups.com

Como uso ainda o Intraweb em alguns projetos, esse era o desafio do dia, fazer o Intraweb 5.x rodar no Apache 2.2;

Vamos lá, mãos à obra então:

  1. Abra o seu projeto Delphi x Intraweb e em seguida adicione os arquivos: ..\Delphi7\source\internet\HTTPD2.pas, ..\Delphi7\source\internet\ApacheTwoApp.pas, ..\Delphi7\source\internet\ApacheTwoHTTP.pas
  2. Apenas o HTTPD2.pas será modificado; porêm será necessário recompilar o ApacheTwoApp.pas e ApacheTwoHTTP.pas
  3. Modifique o codigo de HTTPD2.pas conforme abaixo:
  • Antes da declaração conn_rec declaration, adicione:
      ap_conn_keepalive_e = (AP_CONN_UNKNOWN, AP_CONN_CLOSE, AP_CONN_KEEPALIVE);
  • Dentro da estrutura de conn_rec, substitua isso:
        (** Are we still talking? *)
        flags: Cardinal;
        { The following are in the flags bitset:
        unsigned aborted:1;
    
        (** Are we going to keep the connection alive for another request?
         *  -1 fatal error, 0 undecided, 1 yes   *)
        signed int keepalive:2;
    
        (** have we done double-reverse DNS? -1 yes/failure, 0 not yet,
         *  1 yes/success *)
        signed int double_reverse:2;
        }

    with:

        (** Are we still talking? *)
        flags1: Cardinal;
        { The following are in the flags bitset:
        unsigned aborted:1; }
    
        (** Are we going to keep the connection alive for another request?
         * @see ap_conn_keepalive_e *)
        keepalive: ap_conn_keepalive_e;
    
        flags2: Cardinal;
        { The following are in the flags bitset:
        (** have we done double-reverse DNS? -1 yes/failure, 0 not yet,
         *  1 yes/success *)
        signed int double_reverse:2;
        }
  • Modifique os valores das variaveis conforme abaixo:
    MODULE_MAGIC_COOKIE = $041503232;                 (* "AP22" *)
    MODULE_MAGIC_NUMBER_MAJOR = 20051115; { Apache 2.2.x}
    MODULE_MAGIC_NUMBER_MINOR = 0;
    
  • Mofique também o valor da declaração da LibAPR conforme abaixo:
    LibAPR = 'libapr-1.dll';     {do not localize}
    
  • Após realizar as alterações acima salve o código de recompile; não esqueça também no seu projeto intraweb de modificar as declarações: “IWInitApache” e “ApacheApp” para “IWInitApacheTwo” e
    “ApacheTwoApp”; respectivamente.

    Compile e instale o no apache que vai rodar sem problemas. Estou até pensando que vai dar pra desenvolver no vista. rsrsrs..

    Tags: , , ,