Soap em Apache
Fizemos uma DLL (Soap acessando FB) e colamos em um servidor Win2003 com Apache. Ao tentar acessar o serviço o servidor quer é enviar a DLL para baixar em nossa máquina. Já se geramos o soap em .EXE roda perfeito.
Alguma dica?
Alguma dica?
José Aguiar
Curtidas 0
Respostas
Rodrigo Mourão
13/11/2009
Olá Amigo,
Ao começar a ler sua dúvida pensei logo: "É so dar permitar para executar scripts e executáveis no diretorio da aplicação dentro do apache".
MAs você cita que com exe funciona. Muito estranho pois tanto um exe quanto uma dll são assembly. Vou verificar pois não sou um eximio conhecedor de apache, faço apenas o basico, configurações simples.
Irei verificar e entro em contato !!
Abs!!
Ao começar a ler sua dúvida pensei logo: "É so dar permitar para executar scripts e executáveis no diretorio da aplicação dentro do apache".
MAs você cita que com exe funciona. Muito estranho pois tanto um exe quanto uma dll são assembly. Vou verificar pois não sou um eximio conhecedor de apache, faço apenas o basico, configurações simples.
Irei verificar e entro em contato !!
Abs!!
GOSTEI 0
José Aguiar
13/11/2009
Se preverir posso enviar para vc os fontes, é coisa simples ainda estou só testando.
GOSTEI 0
Rodrigo Mourão
13/11/2009
Ficaria agradecido se pudesse me enviar.
use o Disco virtual !!!
Abs!!
use o Disco virtual !!!
Abs!!
GOSTEI 0
Rodrigo Mourão
13/11/2009
Olá amigo,
Estou aguardando os arquivos para analise.
Att,
Estou aguardando os arquivos para analise.
Att,
GOSTEI 0
Rodrigo Mourão
13/11/2009
Olá Amigo,
Estaremos colocando o chamado como cancelado. Caso deseja poderá reabrí-lo que voltaremos a atendê-lo.
Abs!!!
Estaremos colocando o chamado como cancelado. Caso deseja poderá reabrí-lo que voltaremos a atendê-lo.
Abs!!!
GOSTEI 0
José Aguiar
13/11/2009
Passo para vc um pequeno exemplo de como estamos desenvolvendo os código. Como tinha falando antes não consiguimos fazer o "servidor" pra rodar em apache como DLL só como EXE.
Outra coisa fizemos o teste com o EXE rodano na mesma máquina que o apache e em rede LAN e funciona, porém ao instalar na empresa A do cliente o modulo servidor com apache e na empresa B, modulo cliente dá um erro, msg de erro anexada.
Já testamos o serviço do lado cliente pelo browse e responde blz, puxa todas as informações do servidor apache mas na hora de utiliza o modulo cliente na o referido erro. O que pode está acontecendo??
Anexo:
http://www.aguiarsistemas.com.br/Soap.rar
OBS:
1 - Utilizamos FB1.5
2 - Delphi 7
3 - DBX
Outra coisa fizemos o teste com o EXE rodano na mesma máquina que o apache e em rede LAN e funciona, porém ao instalar na empresa A do cliente o modulo servidor com apache e na empresa B, modulo cliente dá um erro, msg de erro anexada.
Já testamos o serviço do lado cliente pelo browse e responde blz, puxa todas as informações do servidor apache mas na hora de utiliza o modulo cliente na o referido erro. O que pode está acontecendo??
Anexo:
http://www.aguiarsistemas.com.br/Soap.rar
OBS:
1 - Utilizamos FB1.5
2 - Delphi 7
3 - DBX
GOSTEI 0
Rodrigo Mourão
13/11/2009
Olá José,
Li sua resposta agora e ainda nao baixei o arquivo, vou verificar sim com certeza mas uma coisa me ocorreu. Se via browser vc consegue enxergar o servidor e listar os serviços e etc e pela app cliente não então o problema pode estar na maneira em que o cliente acessa o servidor, algo referente e portas, firewall, rede do seu cliente, enfim vou uma sugestão sem nem mesmo ver seus arquivos.
Vou baixar, verificar e entro em contato.
Att,
Li sua resposta agora e ainda nao baixei o arquivo, vou verificar sim com certeza mas uma coisa me ocorreu. Se via browser vc consegue enxergar o servidor e listar os serviços e etc e pela app cliente não então o problema pode estar na maneira em que o cliente acessa o servidor, algo referente e portas, firewall, rede do seu cliente, enfim vou uma sugestão sem nem mesmo ver seus arquivos.
Vou baixar, verificar e entro em contato.
Att,
GOSTEI 0
Rodrigo Mourão
13/11/2009
Olá,
Estamos trabalhando no seu chamado, peço a gentileza que aguarde que em breve entraremos em contato.
Att,
Estamos trabalhando no seu chamado, peço a gentileza que aguarde que em breve entraremos em contato.
Att,
GOSTEI 0
Rodrigo Mourão
13/11/2009
Olá José,
Não há nada de erra tanto com o servidor quanto com o cliente, eu duvido muito que o problema esteja no metodos utilizando até porque voce neste fontes esta usndo componentes CDS para acessar a base.
Você chegou a verificar as permissões do servidor onde o Server esta rodando, questões de rede, acesso aos diretorios e etc ?????
Outra sugestão, e ai mais trabalhoso seria criar um metodo no seu servidor de app um Hello World mesmo. Teste nesta arquitetura para ver se vai dar Timeout se der faça o seguinte. Pegue o endereço WSDL gerado pelo servidor vai na alicação cliente e importa o wsdl utilizando o WSDL importer. Isso vai gerar um .pas, uma especie de proxy.
Chame o método Hello World via proxy para ver o que acontece. Assim podemos ver se o proble e com o SOAP Connection ou algo do genero ou com o acesso ao servidor mesmo.
Fico no aguardo !!
ATT,
Não há nada de erra tanto com o servidor quanto com o cliente, eu duvido muito que o problema esteja no metodos utilizando até porque voce neste fontes esta usndo componentes CDS para acessar a base.
Você chegou a verificar as permissões do servidor onde o Server esta rodando, questões de rede, acesso aos diretorios e etc ?????
Outra sugestão, e ai mais trabalhoso seria criar um metodo no seu servidor de app um Hello World mesmo. Teste nesta arquitetura para ver se vai dar Timeout se der faça o seguinte. Pegue o endereço WSDL gerado pelo servidor vai na alicação cliente e importa o wsdl utilizando o WSDL importer. Isso vai gerar um .pas, uma especie de proxy.
Chame o método Hello World via proxy para ver o que acontece. Assim podemos ver se o proble e com o SOAP Connection ou algo do genero ou com o acesso ao servidor mesmo.
Fico no aguardo !!
ATT,
GOSTEI 0
José Aguiar
13/11/2009
Nesse servidor apache tenho um terminal server rodando e funcionando blz e tem ADSL veloz. O firewall está off. Agora sobre criar o "Hello Word", como fazer isto em apache? indique um tuto.
GOSTEI 0
Rodrigo Mourão
13/11/2009
Na verdade é so criar um nova função no sei servidor que vc ja tem ai:
function HelloWorl: String;
begin
result := 'Hello World !!!';
end;
Quando vc acessar o Servidor via Browser vai ter um link para o Descritor do Serviço: WSDL. Clique neste link e vai abrir um XML no browser. Copie a URL que te levou a esta pagina. Esta URL e o endereco que vc vai usar para consumir no cliente, seria algo como: http://10.0.0.1/Server/Interface?wdsl
Crie uma nova aplicação Win32 no delphi. Salve e va em File -> New -> Order. Na aba WebService selecione um WSDL Importer. Ele vai te pedir o endereço WSDL. Informe o endereço que você copiou. Avance e finalize a operação.
Isso vai gerar uma unit com os codigos necessário para consumir o serviço. La vai ter a function HelloWorld. Basta usar a function publica que tem neste unit para consumir a função.
Faça o teste para saber se o servidor vai responder.
Att,
function HelloWorl: String;
begin
result := 'Hello World !!!';
end;
Quando vc acessar o Servidor via Browser vai ter um link para o Descritor do Serviço: WSDL. Clique neste link e vai abrir um XML no browser. Copie a URL que te levou a esta pagina. Esta URL e o endereco que vc vai usar para consumir no cliente, seria algo como: http://10.0.0.1/Server/Interface?wdsl
Crie uma nova aplicação Win32 no delphi. Salve e va em File -> New -> Order. Na aba WebService selecione um WSDL Importer. Ele vai te pedir o endereço WSDL. Informe o endereço que você copiou. Avance e finalize a operação.
Isso vai gerar uma unit com os codigos necessário para consumir o serviço. La vai ter a function HelloWorld. Basta usar a function publica que tem neste unit para consumir a função.
Faça o teste para saber se o servidor vai responder.
Att,
GOSTEI 0
José Aguiar
13/11/2009
No projeto SERVER tenho: .PAS do projeto; o data modulo web, uWM.pas e o data modulo com os componentes de acesso ao banco de dados, uDM.pas. Neste último arquivo na secção public declarei a função: "HelloWorld". Feito isto pelo o browser acessei o endereço: http://192.168.2.100/cgi-bin/SOAPServer.exe/SOAP/ISoapDM (imagem 01), aparece uma página com várias funções e medotos declarados, porém, não aparece a função "HelloWorld".
Ela deveria aparece para eu pegar o endereço dela?
É esse mesmo o endereço?
É neste arquivos mesmo que devo declarar a função?
Ela deveria aparece para eu pegar o endereço dela?
É esse mesmo o endereço?
É neste arquivos mesmo que devo declarar a função?
GOSTEI 0
Rodrigo Mourão
13/11/2009
Não é bem por ai não.
Quando criamos um Server na verdade o delphi cria um interface para publicar os os metodos e um classe concreta para implementar. Não adiante colocar os metodos no public do DM pois ele não publica dali não.
Localize a interface do Servidor, ex: Se eu der o nome da classe do servidor de Rodrigo entao ele vai criar uma interface IRodrigo e um classe TRodrigo. Assim eu vou em IRodrigo e coloco nela a função e em TRodrigo eu Redeclaro a funcção e coloco a implementação.
No seu caso tem a interface ITeste, declare a função nela e na classe TTeste redeclare e faça a implementação.
Com isso a função vai aparecer no Broser basta então clicar no link WSDL ao lado de ITeste e proceder como falado abaixo.
Att,
Quando criamos um Server na verdade o delphi cria um interface para publicar os os metodos e um classe concreta para implementar. Não adiante colocar os metodos no public do DM pois ele não publica dali não.
Localize a interface do Servidor, ex: Se eu der o nome da classe do servidor de Rodrigo entao ele vai criar uma interface IRodrigo e um classe TRodrigo. Assim eu vou em IRodrigo e coloco nela a função e em TRodrigo eu Redeclaro a funcção e coloco a implementação.
No seu caso tem a interface ITeste, declare a função nela e na classe TTeste redeclare e faça a implementação.
Com isso a função vai aparecer no Broser basta então clicar no link WSDL ao lado de ITeste e proceder como falado abaixo.
Att,
GOSTEI 0
José Aguiar
13/11/2009
Fiz e agora vejo os metodos. Está dando uns erros aqui vou ve uns tuto antes de ti reportar alguma coisa sobre esse erro.
GOSTEI 0
Rodrigo Mourão
13/11/2009
Blz ficarei aguardando !!
Att,
Att,
GOSTEI 0
José Aguiar
13/11/2009
A chamada da interface é assim q se faz
Edit1.Text := ITeste1.GetITeste.OiMundo;
???
Edit1.Text := ITeste1.GetITeste.OiMundo;
???
GOSTEI 0
Rodrigo Mourão
13/11/2009
Não, não é por ai não.
Na verdade o que vc fez foi um WebService que será consumido remotamento por qualquer aplicacao que possa consumir WebService, Jav, PHP, C#, Delphi, etc.
Quando vc acessar o Servidor via Browser vai ter um link para o Descritor do Serviço: WSDL. Clique neste link e vai abrir um XML no browser. Copie a URL que te levou a esta pagina. Esta URL e o endereco que vc vai usar para consumir no cliente, seria algo como: http://10.0.0.1/Server/Interface?wdsl
Crie uma nova aplicação Win32 no delphi. Salve e va em File -> New -> Order. Na aba WebService selecione um WSDL Importer. Ele vai te pedir o endereço WSDL. Informe o endereço que você copiou. Avance e finalize a operação.
Isso vai gerar uma unit com os codigos necessário para consumir o serviço. La vai ter a function HelloWorld dentro de uma interface. Basta usar a function publica que tem neste unit no final da seção interface. Ela usa o componente HTTPRIO para acessar o servidor. Geralmente e um funcao GetxxxxxxPort e ela sempre retorna a interface. Use este funcao GetxxxxxxPort para consumir a função Hello World.
Lembre-se, estava fazendo isso para testar o acesso ao servidor, para verificar se conseguiremos conectar e consumir o servidor.
Att,
Na verdade o que vc fez foi um WebService que será consumido remotamento por qualquer aplicacao que possa consumir WebService, Jav, PHP, C#, Delphi, etc.
Quando vc acessar o Servidor via Browser vai ter um link para o Descritor do Serviço: WSDL. Clique neste link e vai abrir um XML no browser. Copie a URL que te levou a esta pagina. Esta URL e o endereco que vc vai usar para consumir no cliente, seria algo como: http://10.0.0.1/Server/Interface?wdsl
Crie uma nova aplicação Win32 no delphi. Salve e va em File -> New -> Order. Na aba WebService selecione um WSDL Importer. Ele vai te pedir o endereço WSDL. Informe o endereço que você copiou. Avance e finalize a operação.
Isso vai gerar uma unit com os codigos necessário para consumir o serviço. La vai ter a function HelloWorld dentro de uma interface. Basta usar a function publica que tem neste unit no final da seção interface. Ela usa o componente HTTPRIO para acessar o servidor. Geralmente e um funcao GetxxxxxxPort e ela sempre retorna a interface. Use este funcao GetxxxxxxPort para consumir a função Hello World.
Lembre-se, estava fazendo isso para testar o acesso ao servidor, para verificar se conseguiremos conectar e consumir o servidor.
Att,
GOSTEI 0
José Aguiar
13/11/2009
Estou fanzedo deste jeito. Veja:
A unit, na app Server, que tem a interface declarada:
Na unit implementação:
Faço a importação pelo o endereço que pego pelo o browse: http://localhost:5599/scripts/Project2.dll/wsdl/ITeste
Em File --> New --> Othe --> Import......
O delphi gera essa unit na minha app client:
Adiciona essa unit no form1 e chamo a função assim: Edit1.Text := ITeste1.GetITeste.OiMundo; aí gerra esse erro:
Obs: Nesse projeto cliente tem uma chamada a uma consulta utilizando CDS e funciona, na rede.
Estou utilizando ISS 5.1 e Delphi 2010 gerando uma DLL.
Pela net ainda não testei
A unit, na app Server, que tem a interface declarada:
Na unit implementação:
Faço a importação pelo o endereço que pego pelo o browse: http://localhost:5599/scripts/Project2.dll/wsdl/ITeste
Em File --> New --> Othe --> Import......
O delphi gera essa unit na minha app client:
Adiciona essa unit no form1 e chamo a função assim: Edit1.Text := ITeste1.GetITeste.OiMundo; aí gerra esse erro:
Obs: Nesse projeto cliente tem uma chamada a uma consulta utilizando CDS e funciona, na rede.
Estou utilizando ISS 5.1 e Delphi 2010 gerando uma DLL.
Pela net ainda não testei
GOSTEI 0
Rodrigo Mourão
13/11/2009
Tem um endereco publico que ue possa uimportar o WSDL ???
Assim gero aqui e te emando o exmeplo.
Att,
Assim gero aqui e te emando o exmeplo.
Att,
GOSTEI 0
José Aguiar
13/11/2009
Não tenho um IP público. Tenho uma conta no no-ip: soapas.no-ip.org (Fiz alteração na porta do IIS 5.1 para 5599)
GOSTEI 0
José Aguiar
13/11/2009
Outra coisa é q vc tem q marca o dia e um periodo pra tentar conctar
GOSTEI 0
José Aguiar
13/11/2009
Passe um e-mail seu q te passo os arquivos q estou fazendo. Já consegui colocar pra fucionar, abrir tabelas... Mas não consigo utilizá interfaces..
http://soapas.no-ip.org:12332/scripts/Project2.dll
Só tem q marcar o dia e a hora pra eu deixar o modem conectado no meu pc e os firewall desativado junto com o antivirus (o grande vilão deste historia toda)
http://soapas.no-ip.org:12332/scripts/Project2.dll
Só tem q marcar o dia e a hora pra eu deixar o modem conectado no meu pc e os firewall desativado junto com o antivirus (o grande vilão deste historia toda)
GOSTEI 0
Rodrigo Mourão
13/11/2009
hum.... Entao era o antivirus ???
Pois bem, a DevMedia nao autoriza divulgar email aqui no sistema de consultoria. Toda a comunicação deve ser feita via sistema.
VOce pode utilizar o disco virtual.
Att,
GOSTEI 0
Rodrigo Mourão
13/11/2009
Olá amigo,
Conseguiu acessar o disco virtual ?? Podemos ajudar em algo mais ??
Estamos no aguardo para conluirmos o chamado.
Att,
Conseguiu acessar o disco virtual ?? Podemos ajudar em algo mais ??
Estamos no aguardo para conluirmos o chamado.
Att,
GOSTEI 0
José Aguiar
13/11/2009
Estou padado com os dados sobre SOAP. Gerando aqui um arquivozinho do SINTEGRA. Essa semana ainda eu volto aos teste.
Aparentemente era mesmo só o antivirus que barrava a conexão.
Aparentemente era mesmo só o antivirus que barrava a conexão.
GOSTEI 0
Rodrigo Mourão
13/11/2009
Ok, fico no seu aguardo !
GOSTEI 0
José Aguiar
13/11/2009
Isso mesmo era só o antivuris. Deu certo aqui.
Estou gerando o CGI mesmo com apache.
Fiz teste com ISAPI, DLL, mas não consiguei colocar com apache, porém, rodou com ISS 5.1 no WinXP. No entando como vou usar em Windows 2003 server e lá o ISS é outro e não deu conta de configurar para rodar scripts.
Agora ainda não consergui fazer interfaces e consumir.
Gratp!
Estou gerando o CGI mesmo com apache.
Fiz teste com ISAPI, DLL, mas não consiguei colocar com apache, porém, rodou com ISS 5.1 no WinXP. No entando como vou usar em Windows 2003 server e lá o ISS é outro e não deu conta de configurar para rodar scripts.
Agora ainda não consergui fazer interfaces e consumir.
Gratp!
GOSTEI 0
Rodrigo Mourão
13/11/2009
Bem Jose,
Cada duvida tem que ser colocada em um chamado especifico. Se desejar abra um chamado pedindo para consumir um WS com Delhpi.
Agora quando ao suporte ao IIS não sei se a consultoria tem algum canal especifico para isso, vou pedir a ADM para entrar em contato com vc.
Estarei encerrando o chamado caso haja mais alguma duvida basta reabri-lo.
Att,
Cada duvida tem que ser colocada em um chamado especifico. Se desejar abra um chamado pedindo para consumir um WS com Delhpi.
Agora quando ao suporte ao IIS não sei se a consultoria tem algum canal especifico para isso, vou pedir a ADM para entrar em contato com vc.
Estarei encerrando o chamado caso haja mais alguma duvida basta reabri-lo.
Att,
GOSTEI 0