Chapter 23 - Project SoapDataServer |
Project Structure
| SoapDataServer.dpr |
program SoapDataServer;
uses
Forms,
ComApp,
ServerForm in 'ServerForm.pas' ,
ServerWebModule in 'ServerWebModule.pas' ,
ServerDataModule in 'ServerDataModule.pas' ;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TWebModule2, WebModule2);
Application.Run;
end.
| ServerForm.pas |
unit serverform;
interface
uses
SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
public
end;
var
Form1: TForm1;
implementation
uses ComApp;
const
CLASS_ComWebApp: TGUID = '{833BAD2A-CA3F-4194-A0BA-FD57D46EDC16}';
initialization
TWebAppAutoObjectFactory.Create(Class_ComWebApp,
'SoapDataServer', 'SoapDataServer Object');
end.
| ServerWebModule.pas |
unit serverwebmodule;
interface
uses
SysUtils, Classes, HTTPApp, WSDLPub, SOAPPasInv, SOAPHTTPPasInv,
SoapHTTPDisp, WebBrokerSOAP;
type
TWebModule2 = class(TWebModule)
HTTPSoapDispatcher1: THTTPSoapDispatcher;
HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker;
WSDLHTMLPublish1: TWSDLHTMLPublish;
private
public
end;
var
WebModule2: TWebModule2;
implementation
uses WebReq;
initialization
WebRequestHandler.WebModuleClass := TWebModule2;
end.
| ServerDataModule.pas |
Unit serverdatamodule;
interface
uses
SysUtils, Classes, InvokeRegistry, Midas, SOAPMidas, SoapDm, Provider,
DB, DBTables, DBXpress, FMTBcd, SqlExpr;
type
ISoapTestDm = interface(IAppServer)
['{1F109687-6D8B-4F85-9BF5-EFFC87A9F10F}']
function GetRecordCount: Integer;
end;
TSoapTestDm = class(TSoapDataModule, ISoapTestDm, IAppServer)
DataSetProvider1: TDataSetProvider;
SQLConnection1: TSQLConnection;
SQLDataSet1: TSQLDataSet;
SQLDataSet2: TSQLDataSet;
private
public
function GetRecordCount: Integer;
end;
implementation
procedure TSoapTestDmCreateInstance(out obj: TObject);
begin
obj := TSoapTestDm.Create(nil);
end;
function TSoapTestDm.GetRecordCount: Integer;
begin
SQLDataSet2.Open;
Result := SQLDataSet2.Fields[0].AsInteger;
SQLDataSet2.Close;
end;
initialization
InvRegistry.RegisterInvokableClass(TSoapTestDm, TSoapTestDmCreateInstance);
InvRegistry.RegisterInterface(TypeInfo(ISoapTestDm));
end.
| ServerForm.dfm |
object Form1: TForm1
Left = 192
Top = 107
Width = 234
Height = 153
Caption = 'SoapDataServer'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
end
| ServerWebModule.dfm |
object WebModule2: TWebModule2
OldCreateOrder = False
Actions = <>
Left = 271
Top = 114
Height = 177
Width = 493
object HTTPSoapDispatcher1: THTTPSoapDispatcher
Dispatcher = HTTPSoapPascalInvoker1
WebDispatch.PathInfo = 'soap*'
Left = 64
Top = 48
end
object HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker
Converter.Options = [soSendMultiRefObj, soTryAllSchema]
Left = 208
Top = 48
end
object WSDLHTMLPublish1: TWSDLHTMLPublish
WebDispatch.MethodType = mtAny
WebDispatch.PathInfo = 'wsdl*'
AdminEnabled = False
Left = 352
Top = 48
end
end
| ServerDataModule.dfm |
object SoapTestDm: TSoapTestDm
OldCreateOrder = True
Left = 193
Top = 452
Height = 159
Width = 269
object DataSetProvider1: TDataSetProvider
DataSet = SQLDataSet1
Constraints = True
Left = 80
Top = 24
end
object SQLConnection1: TSQLConnection
Connected = True
ConnectionName = 'IBLocal'
DriverName = 'Interbase'
GetDriverFunc = 'getSQLDriverINTERBASE'
LibraryName = 'dbexpint.dll'
LoginPrompt = False
Params.Strings = (
'BlobSize=-1'
'CommitRetain=False'
'Database=c:\program files\interbase corp\interbase6\examples\dat' +
'abase\employee.gdb'
'DriverName=Interbase'
'Password=masterkey'
'RoleName=RoleName'
'ServerCharSet=ASCII'
'SQLDialect=1'
'Interbase TransIsolation=ReadCommited'
'User_Name=sysdba'
'WaitOnLocks=True')
VendorLib = 'GDS32.DLL'
Left = 152
Top = 24
end
object SQLDataSet1: TSQLDataSet
SQLConnection = SQLConnection1
CommandText = 'select * from EMPLOYEE'
Params = <>
Left = 80
Top = 72
end
object SQLDataSet2: TSQLDataSet
SQLConnection = SQLConnection1
CommandText = 'select count(*) from EMPLOYEE'
Params = <>
Left = 152
Top = 72
end
end
|
|