I still get the same error. The source is now:
unit WebModuleUnit1;
interface
uses
System.SysUtils, System.Classes, Web.HTTPApp, ConnectionModule, XData.Aurelius.ConnectionPool;
type
TWebModule1 = class(TWebModule)
procedure WebModule1DefaultHandlerAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
WebModuleClass: TComponentClass = TWebModule1;
implementation
uses
Sparkle.WebBroker.Server,
Sparkle.WebBroker.Adapter,
Sparkle.HTTPServer.Module, Sparkle.HTTPServer.Context, XData.Server.Module,
Aurelius.Engine.DatabaseManager;
{%CLASSGROUP 'System.Classes.TPersistent'}
{$R *.dfm}
var
Server: TWebBrokerServer;
Module: TXDataServerModule;
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
Adapter: IWebBrokerAdapter;
begin
Adapter := TWebBrokerAdapter.Create(Request, Response);
Server.DispatchRequest(Adapter);
end;
initialization
FireDacMySqlConnection := TFireDacMySqlConnection.Create(nil);
Server := TWebBrokerServer.Create;
TDatabaseManager.Update(TFireDacMySqlConnection.CreateConnection);
Module := TXDataServerModule.Create('
http://udelphi/helpdesk/db', TDBConnectionPool.Create(20, TFireDacMySqlConnection.CreateFactory));
Server.Dispatcher.AddModule(Module);
procedure(const C: THTTPServerContext)
begin
C.Response.StatusCode := 200;
C.Response.ContentType := 'text/plain';
C.Response.Close(Tencoding.UTF8.GetBytes('This is a Data server! Do not try to connect directly!'))
end));
Finalization
Server.Free;
FireDacMySqlConnection.Free;
end.
unit ConnectionModule;
interface
uses
Aurelius.Drivers.Interfaces,
Aurelius.Drivers.FireDac,
FireDAC.Dapt,
System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async,
FireDAC.Phys, FireDAC.Phys.MySQL, FireDAC.Phys.MySQLDef, FireDAC.ConsoleUI.Wait, Aurelius.Sql.MySQL, Aurelius.Schema.MySQL, Aurelius.Comp.Connection, Data.DB, FireDAC.Comp.Client;
type
TFireDacMySqlConnection = class(TDataModule)
Connection: TFDConnection;
AureliusConnection1: TAureliusConnection;
private
public
class function CreateConnection: IDBConnection;
class function CreateFactory: IDBConnectionFactory;
end;
var
FireDacMySqlConnection: TFireDacMySqlConnection;
implementation
{%CLASSGROUP 'System.Classes.TPersistent'}
uses
Aurelius.Drivers.Base;
{$R .dfm}
{ TMyConnectionModule }
class function TFireDacMySqlConnection.CreateConnection: IDBConnection;
begin
Result := FireDacMySqlConnection.AureliusConnection1.CreateConnection;
end;
class function TFireDacMySqlConnection.CreateFactory: IDBConnectionFactory;
begin
Result := TDBConnectionFactory.Create(
function: IDBConnection
begin
Result := CreateConnection;
end
);
end;
end.
library mod_xdata;
uses
{$IFDEF MSWINDOWS}
Winapi.ActiveX,
{$ENDIF }
Web.WebBroker,
Web.ApacheApp,
Web.HTTPD24Impl,
WebModuleUnit1 in 'WebModuleUnit1.pas' {WebModule1: TWebModule},
ConnectionModule in 'ConnectionModule.pas' {FireDacMySqlConnection: TDataModule};
{$R .res}
// httpd.conf entries:
//
(
LoadModule xdata_module modules/mod_xdata.dll
<Location /xyz>
SetHandler mod_xdata-handler
</Location>
)
//
// These entries assume that the output directory for this project is the apache/modules directory.
//
// httpd.conf entries should be different if the project is changed in these ways:
// 1. The TApacheModuleData variable name is changed.
// 2. The project is renamed.
// 3. The output directory is not the apache/modules directory.
// 4. The dynamic library extension depends on a platform. Use .dll on Windows and .so on Linux.
//
// Declare exported variable so that Apache can access this module.
var
GModuleData: TApacheModuleData;
exports
GModuleData name 'xdata_module';
begin
{$IFDEF MSWINDOWS}
CoInitFlags := COINIT_MULTITHREADED;
{$ENDIF}
Web.ApacheApp.InitApplication(@GModuleData);
Application.Initialize;
Application.WebModuleClass := WebModuleClass;
Application.Run;
end.