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.