[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