Problema com Servidor DataSnap Delphi XE7
Fala Pessoal, essa é minha primeira vez aqui e já com um problema que para alguns sem duvida é algo simples.
Sou novo com DataSnap e pesquisei muito e simplesmente não consegui resolver meu pro. então la vai.
Criei um servidor DataSnap (Form Application, Vcl, TDSServerModule), Rodou Legal... no meu ServerMethods eu coloquei um FdConection, qry e etc...
Consegui acesso com o cliente, Porém dentro do meu servidor eu gostaria de quando ele iniciasse, ele verificasse se consegue conectar o FdConection ao meu Banco de Dados do FireBird 2.5 (que Criei a base usando o IBExpert).
então no onCreate do meu form principal eu coloquei o seguinte codigo
try
if not ServerMethods.conexao.Connected then
ServerMethods.conexao.connected := true;
ServerContainer.DSServer1.Start;
if ServerContainer.DSServer1.Started then
begin
frmPrincipal.lbStatus.Caption := 'Servidor Ativo';
frmPrincipal.Caption := 'Servidor Ativo';
frmPrincipal.lbStatus.Font.Color := clGreen;
frmPrincipal.btnAtivar.Enabled := false;
frmPrincipal.BtnDesativar.Enabled := true;
frmPrincipal.edtPort.Enabled := False;
end;
except
ShowMessage('Erro ao Conecatar o banco e iniciar o servidor');
Application.Terminate;
end;
pra poder chamar o ServerMethods eu precisei usar a variavel abaixo
var
ServerMethods : TServerMethods1;
se não usar eu não consigo enxergar o FdConnection.
o problema de tudo é: Não consigo ativar o FdConection de nenhuma forma por codigo... ja tentei em um btn e de todas as formas possiveis, e sempre me retorna apenas a exception (que no meu caso é a mensagem que está no condigo acima) e nunca ativa o fdconection.
mais se eu for normal no ServerMethods e clico no Connected ele ativa sem pro e roda blz. Sinceramente ja penssei em desistir do projeto pq nem mesmo na net eu consegui localizar nada que me ajude, e olhe que ja faz quase um mês que tento resolver isso, então minha ultima chance foi recorrer a vocês do forum.
Mais uma coisa, eu sempre utilizei o codigo acima sem erro algum quando se tratava de DataModule, mas no serverMethods é como se tivesse algo que impede da minha conexao ser ativada por codigo.
Sou novo com DataSnap e pesquisei muito e simplesmente não consegui resolver meu pro. então la vai.
Criei um servidor DataSnap (Form Application, Vcl, TDSServerModule), Rodou Legal... no meu ServerMethods eu coloquei um FdConection, qry e etc...
Consegui acesso com o cliente, Porém dentro do meu servidor eu gostaria de quando ele iniciasse, ele verificasse se consegue conectar o FdConection ao meu Banco de Dados do FireBird 2.5 (que Criei a base usando o IBExpert).
então no onCreate do meu form principal eu coloquei o seguinte codigo
try
if not ServerMethods.conexao.Connected then
ServerMethods.conexao.connected := true;
ServerContainer.DSServer1.Start;
if ServerContainer.DSServer1.Started then
begin
frmPrincipal.lbStatus.Caption := 'Servidor Ativo';
frmPrincipal.Caption := 'Servidor Ativo';
frmPrincipal.lbStatus.Font.Color := clGreen;
frmPrincipal.btnAtivar.Enabled := false;
frmPrincipal.BtnDesativar.Enabled := true;
frmPrincipal.edtPort.Enabled := False;
end;
except
ShowMessage('Erro ao Conecatar o banco e iniciar o servidor');
Application.Terminate;
end;
pra poder chamar o ServerMethods eu precisei usar a variavel abaixo
var
ServerMethods : TServerMethods1;
se não usar eu não consigo enxergar o FdConnection.
o problema de tudo é: Não consigo ativar o FdConection de nenhuma forma por codigo... ja tentei em um btn e de todas as formas possiveis, e sempre me retorna apenas a exception (que no meu caso é a mensagem que está no condigo acima) e nunca ativa o fdconection.
mais se eu for normal no ServerMethods e clico no Connected ele ativa sem pro e roda blz. Sinceramente ja penssei em desistir do projeto pq nem mesmo na net eu consegui localizar nada que me ajude, e olhe que ja faz quase um mês que tento resolver isso, então minha ultima chance foi recorrer a vocês do forum.
Mais uma coisa, eu sempre utilizei o codigo acima sem erro algum quando se tratava de DataModule, mas no serverMethods é como se tivesse algo que impede da minha conexao ser ativada por codigo.
Gilslan Powell
Curtidas 0
Respostas
Gabriel Baltazar
05/12/2016
O FdConnection tem que ficar no ServerModule?
GOSTEI 0
Gilslan Powell
05/12/2016
sim, pq se eu tirar não vou conseguir conectar a query e provider, fica como se fosse uma limitação, simplesmente não enxerga a conexão fora do ServerMethods. fiz o teste tanto no form principal, quanto dentro de um DataModule e não consegui ligar o connction a query..
GOSTEI 0
Gutierry Pereira
05/12/2016
Boa tarde,
O problema que esta passando é devido a falta de conhecimento de como é instanciado o TServerMethods. O TServerMethods é instanciado a cada requisição, então ao tentar fazer uma requisição sua conexão será criada mais os dados de conexão não existiram por que você fez isso no form principal. E o seu for principal esta "enxergando" uma instancia que não será utilizada.
Se sua conexão for unica para toda a aplicação você pode colocar isso em um datamodule que será intsnaciado uma unica vez no create da aplicação e se referenciar a ele no TServerMethods. Uma outra solução é criar uma classe singleton de conexão.
espero ter ajudado.
Att: Gutierry Antonio
O problema que esta passando é devido a falta de conhecimento de como é instanciado o TServerMethods. O TServerMethods é instanciado a cada requisição, então ao tentar fazer uma requisição sua conexão será criada mais os dados de conexão não existiram por que você fez isso no form principal. E o seu for principal esta "enxergando" uma instancia que não será utilizada.
Se sua conexão for unica para toda a aplicação você pode colocar isso em um datamodule que será intsnaciado uma unica vez no create da aplicação e se referenciar a ele no TServerMethods. Uma outra solução é criar uma classe singleton de conexão.
espero ter ajudado.
Att: Gutierry Antonio
GOSTEI 0
Gilslan Powell
05/12/2016
Obrigado, Gutierry Antonio!
Ajudou sim, consegui resolver.
Ajudou sim, consegui resolver.
GOSTEI 0