[firebase-br] [OFF-TOPIC] SOAP x MEMÓRIA
Francisco Thiago
jeandeadlucky em yahoo.com.br
Ter Out 4 15:48:32 -03 2005
Caros amigos,
Me desculpem pelo off....
Tenho um servidor de aplicação SOAP escrito no D7, acessando FB.1.2.3,
rodando sob o IIS 5.1
Hoje percebi que quando alguém se conecta ao servidor de aplicação, ele
simplesmente não joga fora a memória utilizada e nem fecha a conexão com o
Firebird. Percebi isso quando instalei o Classic Server e olhando no
Gerenciador de tarefas, vi serem criadas novas instancias do fb_inet_server
a cada requisição... E o processo inetserver.exe (o iss) só aumentava o
tamanho da memória utilizado... Onde conclui que a aplicação não está sendo
destruída corretamente.
Um detalhe que possa ser importante.
No OnCreate do TSoapDataModule, eu escreve o seguinte código:
// Cria um Dm Comum (TDataModule)
DmEmpresa := TDmEmpresa.Create(Self);
// Esses Dm's herdam de TDmCustom* que por sua vez implementa IDmTable.
Esta interface não está visivel para o WebService
DmEmpresa.SetDmConnection(Self);
// Procedure que procura por DataSetProviders e os registra. Não existe
código para desregistrar
RegistrarProviders(DmEmpresa);
Alguém poderia me dar uma luz?
Francisco Thiago de Almeida
Enter & Plug Informática
Divisão: Desenvolvimento e Banco de dados
Franca / SP
msn: thiago em enterplug.com.br
IDMTable = interface(IInterface)
['{50CC2B58-4384-45C2-869F-D2570DCEB57C}']
procedure SetDmConnection(DataModule: TDataModule);
end;
type
TDMCustom = class(TDataModule,IDmTable)
private
{ Private declarations }
FDMConnection: IDmConnection;
protected
property DmConnection: IDmConnection read FDmConnection;
public
{ Public declarations }
procedure SetDmConnection(DataModule: TDataModule);
end;
procedure TDMCustom.SetDmConnection(DataModule: TDataModule);
var
i :Integer;
begin
FDmConnection := (DataModule as IDmConnection);
if FDMConnection <> Nil then
begin
if (FDMConnection.getConnection <> Nil) and (FDMConnection.getConnection
is TSQLConnection) then
begin
for i := 0 to ComponentCount -1 do
if TApplicationUtils.InAncestral('TCustomSQLDataSet',Components[i])
then
TCustomSQLDataSet(Components[i]).SQLConnection :=
TSQLConnection(FDMConnection.getConnection);
end;
end;
end;
_______________________________________________________
Novo Yahoo! Messenger com voz: ligações, Yahoo! Avatars, novos emoticons e muito mais. Instale agora!
www.yahoo.com.br/messenger/
Mais detalhes sobre a lista de discussão lista