Comentários sobre: Registrando DataSnap Server Class em tempo de execução no Delphi http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/ Andreano Lanusse blog - artigos, tutoriais e vídeos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e técnicas de programação Sat, 16 Jun 2018 08:34:04 +0000 hourly 1 https://wordpress.org/?v=6.5.7 Por: Jorge http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-48036 Fri, 14 Oct 2016 20:45:55 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-48036 Boa tarde.

Fiz o método no Delphi XE 7, e tive o seguinte erro:

{
“error”:”Unknown driver: DSServer1″
}

]]>
Por: Francis Lay Silva http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-42985 Thu, 14 May 2015 02:47:10 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-42985 Olá Andreano, excelente artigo, o seu blog é praticamente a única ou no mínimo a melhor fonte de informação sobre DataSnap.

Estou querendo utilizar sua classe TSimpleServerClass em um projeto de um servidor DataSnap genérico, que vai servir de base para outros servidores com poucas modificações. Ele está sendo escrito em XE7. O diferencial dele é que os Server Methods vão ser carregados dinamicamente por meio de classes contidas em DLLs, bastando adicionar a DLL para o diretório específico e o servidor carrega os métodos e os registra no servidor.

Já está tudo pronto, as DLLs são carregadas dinamicamente e as classes registradas utilizando TSimpleServerClass. Entretanto as classes registradas NÃO APARECEM na lista de classes do servidor, mas ao consultar a lista de componentes do TDatamodule usado como Server Container destas classes, todos os componentes TSimpleServerClass registrados pela DLL estão lá com as respectivas propriedades preenchidas corretamente.

Se eu utilizo o mesmo comando TSimpleServerClass diretamente no DataModule a classe é registrada e publicada normalmente, então a rotina está correta, o problema acontece quando a classe é registrada por dentro da DLL.

Existe alguma incompatibilidade conhecida do DataSnap com DLLs ? Você tem alguma idéia do que pode ser o problema?

Fico grato por qualquer dica que puder me fornecer pois já tentei de tudo e não consigo contornar o problema.

Obrigado.

]]>
Por: Francis Silva http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-42982 Wed, 13 May 2015 15:40:47 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-42982 Em resposta a marcelo.

Eu fiz a mesma coisa utilizando DLLs com LoadLibrary e a classe TSimpleServerClass.

Eu percebi que essa classe cria os componentes TSimpleServerClass no Server Datamodule (através da constatação da existência do componente na lista de componentes do Datamodule), mas apesar disso a classe e nem os seus métodos são publicados. Ou seja, os TSimpleServerClass estão criados mas não publicam nada.

O que pode estar sendo feito de errado? Não é possível registrar e publicar métodos de classes contidas em DLLs ou BPLs ?

]]>
Por: Júlio César Ferreira (@jcmferreira) http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-6877 Tue, 01 Nov 2011 14:21:50 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-6877 Bom dia Andreano.

Com relação ao registro de classes pelo servidor DataSnap, existe uma forma de permitir que uma classe com um método em overload possa ser registrada?

Tentei realizar um teste com um método chamado GetImage com as assinaturas abaixo:
GetImage( const id: Integer ): TStream; overload;
GetImage( const login: String ): TStream; overload;

Mas o DataSnap não aceita o registro da respectiva classe pois reclama que o método GETIMAGE já foi registrado.

]]>
Por: Publicando providers durante o registro dinâmico de DataSnap Server Class | Andreano Lanusse Blog | Tecnologia e Desenvolvimento de Software http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-6802 Mon, 24 Oct 2011 23:38:27 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-6802 […] Embarcadero Tweet Já faz algum tempo que publiquei aqui no blog sobre registro de DataSnap Server Class em tempo de execução, neste mesmo post surgiu vários comentários relacionados a não publicação dos Provider parte […]

]]>
Por: Registrar DsServerClass em tempo de execução | Rafael Pasa http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-6601 Fri, 07 Oct 2011 14:03:22 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-6601 […] […]

]]>
Por: Rafael Alberto Pasa http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-6138 Fri, 29 Jul 2011 23:42:16 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-6138 Esse codigo não publica os providers de um servermodule, ae não ajuda muito.
Eu modifiquei uma função pra resolver o problema.
segue o códgio abaixo.

function TSimpleServerClass.GetDSClass: TDSClass;
begin
Result := TDSClass.Create(FPersistentClass, false);
Result := TDSClass.Create(TDSProviderDataModuleAdapter, Result)
end;

facinho.

Abraço

]]>
Por: Rafael Pasa http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-6137 Fri, 29 Jul 2011 20:45:33 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-6137 Achei a solução para publicar os provider nesse exemplo.

mude o codigo da função GetDSClass para o codigo a abaixo.

function TSimpleServerClass.GetDSClass: TDSClass;
begin
Result := TDSClass.Create(FPersistentClass, false);
Result := TDSClass.Create(TDSProviderDataModuleAdapter, Result)
end;

Abraço

]]>
Por: Rafael Pasa http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-6134 Thu, 28 Jul 2011 16:55:59 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-6134 Esse seu exmplo não permite que seja publicados os Providers do Servidor DataSnap.
Apenas podemos publicar os metdos declarados no ServerModule.
Se você Andreano, tiver uma maneira de publicar os providers para serem ligados ao clientDataSet na App cliente, por favor disponibilize o exemplo.

Tenho urgencia em Resolver esse problema.
Obrigado

]]>
Por: marcelo http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-5363 Mon, 23 May 2011 22:46:53 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-5363 Andreano so voce pode me salvar, estou gostando demais o datasnap, porem como meu sistema é todo dinamico em BPLs preciso fazer o mesmo para o metodos do servidor, para isso criei pacotes (BPL) para cada modulo, Compra.bpl, Estoque.bpl, Venda.bpl carregado em tempo de execução com LoadPackage() assim nao preciso recompilar meu executavel do servidor para adicionar novos metodos no servidor e quando eu mudar um metodo do pacote Estoque.bpl nao preciso atualizar todo o servidor, so parar o servico colocar a nova bpl e iniciar o servico novamente, porem ja tentei de varios jeitos vincular DSServerClass dentro de um bpl carregada em tempo de execução com LoadPackage() mas nao consegui ter sucesso, existe algum bug relacionado a isso? pode enviar um exemplo? ja com pacotes carregados automaticos ja funciona, to acredito ser um BUG do datasnap, estou utilizando DELPHI XE, socorre eu. Obrigado.

]]>
Por: Andreano Lanusse http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-5304 Mon, 16 May 2011 19:33:51 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-5304 Rodrigo, estes métodos que você menciona são métodos relacionados a interface do IAppServer, que é usado pelo provider e clientdataset.

]]>
Por: Rodrigo Martim http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-5213 Tue, 10 May 2011 17:03:45 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-5213 Boa tarde Andreano,

Desculpe – me pela ignorancia, porem, não consigo entender o seguinte.
Fazendo a publicação da classe para o lado cliente utilizando o componente TDSServerClass e seu metodo OnGetClass este problema se resolve.
O Problema apenas acontece quando a publicação para o lado cliente é realizada com a classe TSimpleServerClass,
notei que ao registrar por este metodo, vários metodos não são publicados.

Exemplos:
TDSCidade.AS_ApplyUpdates TDSCidade AS_ApplyUpdates
TDSCidade.AS_GetRecords TDSCidade AS_GetRecords
TDSCidade.AS_DataRequest TDSCidade AS_DataRequest
TDSCidade.AS_GetProviderNames TDSCidade AS_GetProviderNames
TDSCidade.AS_GetParams TDSCidade AS_GetParams
TDSCidade.AS_RowRequest TDSCidade AS_RowRequest
TDSCidade.AS_Execute TDSCidade AS_Execute

Aparecem apenas quando registrados pelo componente TDSServerClass

Desculpe – me se estiver falando besteira, e muito obrigado pela ajuda.
Atenciosamente,
Rodrigo Martim

]]>
Por: Andreano Lanusse http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-5202 Mon, 09 May 2011 23:20:11 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-5202 Em resposta a Rodrigo Martim.

Oi Rodrigo,

Isso acontece porque você está tentando retornar um ClientDataSet em um dos métodos e isso não é possível, na seção DataSnap do meu blog eu explico os tipos que podem ser retornados e convertidos em JSON.

]]>
Por: Rodrigo Martim http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-5191 Mon, 09 May 2011 14:10:28 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-5191 Bom dia Andreano,

Estou efetuando o registro de minhas classes dessa forma, porem quando eu tento carregar o meu CDS ele retorna o erro.

Remote Error: TDSCidade.AS_GetRecords method not found in the server method list.

caso eu faça o registro utilizando o componente
DSServerClass ele funciona perfeitamente.

você saberia me informar o por que deste problema?

Agradecido desde já,
Atenciosamente,
Rodrigo Martim.

]]>
Por: Andreano Lanusse http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-4725 Wed, 30 Mar 2011 19:57:17 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-4725 Em resposta a Adelson Corrêa Nunes.

Aldeson,

Por favor leia esse post http://www.andreanolanusse.com/pt/implementando-cache-de-dados-em-servidores-datasnap/

]]>
Por: Alexandre Henzen http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-4605 Tue, 22 Mar 2011 14:31:21 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-4605 Olá Andreano, essa forma como implementou o server precisa estar parado. Eu preciso registrar as classes depois que o server foi iniciado.

]]>
Por: Adelson Corrêa Nunes http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-4592 Sun, 20 Mar 2011 08:42:15 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-4592 Andreano,

Você poderia citar em que casos cada tipo TDSLifeCycle deve ser aplicado ?

]]>
Por: Tiago http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-3912 Tue, 08 Feb 2011 01:01:36 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-3912 Adriano, por favor !
O método Constructor da classe criada para poder ser registrada dessa forma não é executado.

Tem alguma forma de fazer ser executado ou alguma outra forma de instanciar alguns objetos adicionados nela quando ela for instanciada pelo DataSnap ?

O que acontece é que quero criar alguns objetos para serem utilizados pela classe servidora, porém esses não consigo instanciar por conta do método Constructor não ser chamado.

Tem alguma idéia ?
Muito obrigado !
Att. Tiago

]]>
Por: Rodrigo http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-3739 Fri, 28 Jan 2011 13:12:40 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-3739 Andreano,

Como fica a implementação disso, tem como você colocar isso num exemplo?

Rodrigo

]]>
Por: marlon david de souza http://www.andreanolanusse.com/pt/registrando-datasnap-server-class-em-tempo-de-execucao-no-delphi/#comment-3452 Wed, 12 Jan 2011 16:16:49 +0000 http://www.andreanolanusse.com/pt/?p=1127#comment-3452 No novo DataSnap, em uma conexão do tipo Session, eu sei que os objetos são criados apenas quando são usados (execução de algum de seus métodos), porém destruídos apenas quando a conexão é encerrada.

Existe alguma maneira de destruir os objetos criados sem ter que fechar a conexão?

]]>