IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Delphi 2005][IntraWeb]StandAlone => Dll pour Apache


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut [Delphi 2005][IntraWeb]StandAlone => Dll pour Apache
    Bonjour,

    J'ai lu le tutoriel de Jean-Pierre Lamon sur Intraweb (http://jplamon.developpez.com) et en particulier la section sur le déploiement de l'application. Seulement avec l'évolution d'IW (beaucoup de changements entre la version livrée avec Delphi 7 et celle avec Delphi 2005), le squelette de l'application et les unités utilisées ne semblent plus être les mêmes ! On n'a par exemple pas de IWInitStandAlone dans le code du projet.

    Le code du projet quitte de (codé avec Delphi 7):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    program DNautes;
     
    {PUBDIST}
     
    uses
     
      IWInitStandAlone,
      ServerController in 'ServerController.pas' {IWServerController: TDataModule},
      IWUnit1 in 'IWUnit1.pas' {formMain: TIWForm1},
      DatamoduleUnit in 'DatamoduleUnit.pas' {DataModule1: TDataModule},
      uWin2 in 'uWin2.pas' {fWindow2: TIWPageForm};
     
    {$R *.res}
     
    begin
     
      IWRun(TFormMain, TIWServerController);
     
    end.
    tel qu'indiqué dans le tutoriel (par exemple) à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    program Project1;
     
    {%DeployDocTool 'Deployment.bdsdeploy'}
     
    uses
    	Forms,
    	IWMain,
    	IWForm1 in 'IWForm1.pas' {MainForm111: TIWAppForm},
    	ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},
    	UserSessionUnit in 'UserSessionUnit.pas' {IWUserSession: TIWUserSessionBase},
    	Unit1 in 'Unit1.pas';
     
    {$R *.res}
     
    begin
    	Application.Initialize;
    	Application.CreateForm(TformIWMain, formIWMain);
    	Application.Run;
    end.
    Sous Delphi 2005.

    J'aimerai donc pouvoir déployer l'application non pas en standalone mais en dll et l'intégrer dans Apache. D'après les recherches que j'ai pu faire, il fallait modifier le fichier HTTPD2.pas pour fonctionner avec ma version d'Apache (2.0.54) et recompiler les fichiers ApacheTwoApp.pas et ApacheTwoHTTP.pas; cela est déjà fait (voir l'article de Brian Long => http://www.blong.com/Articles/Apache%20For%20Windows/ApacheWindows.html#AboutBrian ).

    En définitive donc, j'obtiens ceci comme fichier du projet (transformation du fichier de projet du standalone précédent)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    library Project1;
     
    {%DeployDocTool 'Deployment.bdsdeploy'}
     
    uses
    	Forms,
    	IWInitISAPI,//<- d'après le tut de Jplamon, il faut inclure cette unité...
    	ApacheTwoApp,
    	IWMain,
    	IWForm1 in 'IWForm1.pas' {MainForm111: TIWAppForm},
    	ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},
    	UserSessionUnit in 'UserSessionUnit.pas' {IWUserSession: TIWUserSessionBase},
    	Unit1 in 'Unit1.pas';
     
    {$R *.res}
     
    {D'après le tut de Brian Long, il faut exporter apache_module. Et cela requiert l'ajout de ApacheTwoApp dans les uses}
    exports 
    	apache_module name 'MyApacheModule';
     
    begin
    	Application.Initialize;
    	Application.CreateForm(TformIWMain, formIWMain);
    	Application.Run;
    end.
    J'ai par ailleurs modifié l'entête de l'unité ServerController, qui devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses
    	SysUtils, Classes, IWServerControllerBase, IWBaseForm,
    		// For OnNewSession Event
    	UserSessionUnit, IWApplication, IWAppForm,
    //	HTTPApp; //<- Initiallement HTTPApp est inclus, j'ai remplacé par ApacheTwoHTTP
    	ApacheTwoHTTP;
    Après tout cette manipulation, j'ai essayé donc de charger le module dans Apache : (extrait de httpd.conf)
    #Load MyModule module

    LoadModule MyApacheModule "D:/Dev/Test/IntraWeb/Project1.dll"
    Et j'ai une jolie exception au démarrage d'apache :
    ---------------------------
    Apache.exe - Erreur d'application
    ---------------------------
    L'exception Exception logicielle inconnue (0x0eedfade) s'est produite dans l'application à l'emplacement 0x77e4d756.


    ---------------------------
    OK Annuler
    ---------------------------
    Il y'a absolument rien d'écrit dans le fichier log d'erreur d'Apache...

    Voilà, y'a-t-il un utilisateur plus avertit d'IW (sous D 2005) qui pourrait m'aider ?

    D'avance, je vous remercie.

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut
    je ne peux pas t'aider malheuresement parce que je débute avec intraweb et je n pas encore arriver là mais j'estime que c toi qui va m'aider cette fois-ci mon problème est : je n'arrive pas à faire référence à mon datamodule dans le mainForm c à dire qd je fais dans un événement onclick : datamodule.requête , le débogueur me dit erreur datamodule non déclaré m^ si la unit de mon datamodule et bien déclaré dans les uses de mainForm. je précise datamodule s'appelle dans intraweb de delphi 2005 IWUserSession et j modifié ServerController pour faire référence aux datas. pour l'affichage des données simple dans un iwdbgrid ça marche mais dans les événements je ne peux pas faire réf comme décrit en haut... si t'as une idée je te remerci d'avance

Discussions similaires

  1. KADAO 9.0 (Win32) Pour Delphi 2005 (win32)
    Par Mustard007 dans le forum Bases de données
    Réponses: 7
    Dernier message: 01/11/2005, 18h48
  2. DAO sous DELPHI 2005 pour MS Access...
    Par Mustard007 dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/10/2005, 17h43
  3. Réponses: 3
    Dernier message: 04/10/2005, 09h33
  4. Livres pour Delphi 2005 PE ?
    Par will-scs dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2005, 07h48
  5. Delphi 2005 - Composants pour BD
    Par Benoit30 dans le forum Bases de données
    Réponses: 1
    Dernier message: 04/08/2005, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo