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):
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 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.
Sous Delphi 2005.
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.
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)
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
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.
Après tout cette manipulation, j'ai essayé donc de charger le module dans Apache : (extrait de httpd.conf)
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;
Et j'ai une jolie exception au démarrage d'apache#Load MyModule module
LoadModule MyApacheModule "D:/Dev/Test/IntraWeb/Project1.dll":
Il y'a absolument rien d'écrit dans le fichier log d'erreur d'Apache...---------------------------
Apache.exe - Erreur d'application
---------------------------
L'exception Exception logicielle inconnue (0x0eedfade) s'est produite dans l'application à l'emplacement 0x77e4d756.
---------------------------
OK Annuler
---------------------------
Voilà, y'a-t-il un utilisateur plus avertit d'IW (sous D 2005) qui pourrait m'aider ?
D'avance, je vous remercie.
Partager