Executando aplicação Java e Flex 3 no servidor

34 respostas
S

Oi, tenho uma aplicação .war que executo localmente tudo executa perfeito, inclusive já configurei um ip do meu banco principal que já está na web, e quando executo ele no localhost:8080 ele roda perfeitamente, mas quando implanto o .war no servidor o seguinte erro aparece “send failed” um erro que eu capturo ao tentar fazer o login comunicando com a classe java, alguém tem alguma solução??? uso o Eclipse com o plugin do flex 3, e meu servidor uso o apache tomcat.

Obrigado a todos!

34 Respostas

T

o End Point do flex ta configurado certinho?

S

sou iniciante, onde configuro isso?

obrigado!

T

uai depende o como tu ta usando o adobe flex, ta usando algum framework MVC? Cairngorm ou swiz?

S

Não uso framework mvc faço tudo na mão mesmo e uso Blazeds para integrar!

T

aaah cara procura algo como

<mx:RemoteObject id="ro" destination="my_amf" showBusyCursor="true" endpoint="{this.model.REMOTE_ENDPOINT}" source="Facade"> </mx:RemoteObject>
sem um framework não sei onde tu colocou isso

PS: esse endpoint é meu, então nao vai ter nada parecido no seu heheheh

S

Two_:
aaah cara procura algo como

<mx:RemoteObject id="ro" destination="my_amf" showBusyCursor="true" endpoint="{this.model.REMOTE_ENDPOINT}" source="Facade"> </mx:RemoteObject>
sem um framework não sei onde tu colocou isso

PS: esse endpoint é meu, então nao vai ter nada parecido no seu heheheh

Bom em meu .mxml coloco um código parecido com esse e depois vou em remoting-config.xml que é o arquivo de configuração do Blazeds onde eu configuro o destino percebi que no meu código também tem essa atributo endpoint só que eu não utilizo.
O que devo por nele o caminho da url do servidor?

T

Sim. Como você tava testando localmente o endpoint era o servidor local. no caso como agora não é mais local tem que ser o endpoint do servidor ^^

L

Fala Surian, cara poderia explicar um pouco melhor o seu problema?

Vc está tentando colocar o seu sistema em um servidor externo ???

Esse servidor, tem suporte a Tomcat(não o local, o externo)?

Como vc fez o Deploy da sua aplicação ???

Outra coisa, quando vc tenta logar na sua aplicação um Alert deve ser exibido, indicando que tipo de erro ocorreu, poste ele para que eu possa dar uma olhada.

A poucos dias atraz apanhei bastante com essa questão… talvez eu possa ajudar.

Abss

T

LeandroMario, tinha esquecido isso hehehehe.
Eu não posso ajudar muito pq utilizo o flex atualmente com o php, ja que tive problema com BlazeDS + hibernate em relação a lazy loading

L

Pois é Two, falam muito sobre esse problema do hibernate com o lazy loading, poderia dar uma pequena explicação de qual é esse problema? ainda não me deparei com isso…

S

LeandroMario:
Fala Surian, cara poderia explicar um pouco melhor o seu problema?

Vc está tentando colocar o seu sistema em um servidor externo ???

Esse servidor, tem suporte a Tomcat(não o local, o externo)?

Como vc fez o Deploy da sua aplicação ???

Outra coisa, quando vc tenta logar na sua aplicação um Alert deve ser exibido, indicando que tipo de erro ocorreu, poste ele para que eu possa dar uma olhada.

A poucos dias atraz apanhei bastante com essa questão… talvez eu possa ajudar.

Abss

Seguinte quero rodar meu aplicativo .war no servidor externo que usa o apache tomcat, inclusive lá já possui outras aplicações .war, o deploy acredito que está tudo certo, inclusive a telinha do flex abre e tudo mais, mas quando eu vou tentar logar e buscar meus dados através do java, ele aparece a mensagem no HAlert que configurei e aparece ‘Send Failed’ quanto a mensagem completa por enquanto não tem jeito de te passar porque eu teria que reconfigurar a mensagem de erro para imprimir a mensagem completa e quem faz o deploy da aplicação e outra pessoa que não está no momento.

Se poder me ajudar com essas informações agradeço muito, qualquer informação já é de grande importancia!

T

O ano passado abrir um tópico aqui no falando sobre esse problemas, foi apresentado varias soluções que nem 1 resolvia realmente esse problema.
Acontece que quando o Flex tenta puxar alguma POJO do java que possui relacionamento do tipo lazy ele retorna um erro, ja que relacionamento do tipo lazy ele retorna um objeto do tipo proxylazyhibernate ou algo do tipo. o Flex não sabe o que é esse objeto realmente e retorna ele para o java, o java entao gera uma exception pq a sessao ja foi fexada.
algo que só estudando para entender…

I

Mas tem que tem alguém que conseguiu rodar a aplicação em um servidor externo usando o flex com backend em java utilizando o Blazeds, afinal ele executa em localhost perfeitamente só na hora de implantar no servidor externo que o erro ocorre!

Vou ver se descobro alguma coisa e qualquer coisa te aviso, porque também estou passando pelo mesmo problema!

S

Ivan Alves:
Mas tem que tem alguém que conseguiu rodar a aplicação em um servidor externo usando o flex com backend em java utilizando o Blazeds, afinal ele executa em localhost perfeitamente só na hora de implantar no servidor externo que o erro ocorre!

Vou ver se descobro alguma coisa e qualquer coisa te aviso, porque também estou passando pelo mesmo problema!

Já tô pra ficar louco com isso, estou procurando até achei algumas coisas mas até agora nada resolveu!

L

Cara meio dificil de entender… Mas sim, tem como usar o java como back-end em um projeto Flex, eu consegui;

Mas vamos lá vou passar a forma que usei para “subir” meu projeto para um servidor externo;

1 - Se estiver usando o Eclipse como IDE verifique se está na perspectiva Flash
2 - Estando na perspectiva Flash, no menu superior(eclipse) escolha a opção Project, e o sub-menu Export Build Release, ele irá criar mais um diretorio no seu projeto;
3 - Em seguida clique com o botão direito em cima do projeto, escolha o sub-menu Export, exporte-o como War, que pode ser escolhido na pasta Web.
4 - isso irá gerar o nomeDoProjeto.war
5 - Entre no tomcat-manager, e escolha o arquivo war que ainda está local, assim que selecionado clique em deploy

E já estará pronto… a proposito, usamos aqui a CentralServer que já nos dá suporte ao Tomcat, então teoricamente já deverá funcionar;

Algumas coisas tem que ser verificadas;

se usa o hibernate, no hibernate.cfg.xml deverá configurar a property connection.url, para o seu endereço por exemplo:

jdbc.mysql://enderecoDaAplicação/nomeDaBase;

Não sei se te ajuda, mas esses simples passos deram certo aqui;

Qualquer coisa estamos ae para ajudar;

sobre o End-Point ele já vem pré configurado, e não será necessario configurar, por via das duvidas caso queira conferir, ele se encontra no services-config.xml, no pacote gerado pelo blazeDS;

S

LeandroMario:
Cara meio dificil de entender… Mas sim, tem como usar o java como back-end em um projeto Flex, eu consegui;

Mas vamos lá vou passar a forma que usei para “subir” meu projeto para um servidor externo;

1 - Se estiver usando o Eclipse como IDE verifique se está na perspectiva Flash
2 - Estando na perspectiva Flash, no menu superior(eclipse) escolha a opção Project, e o sub-menu Export Build Release, ele irá criar mais um diretorio no seu projeto;
3 - Em seguida clique com o botão direito em cima do projeto, escolha o sub-menu Export, exporte-o como War, que pode ser escolhido na pasta Web.
4 - isso irá gerar o nomeDoProjeto.war
5 - Entre no tomcat-manager, e escolha o arquivo war que ainda está local, assim que selecionado clique em deploy

E já estará pronto… a proposito, usamos aqui a CentralServer que já nos dá suporte ao Tomcat, então teoricamente já deverá funcionar;

Algumas coisas tem que ser verificadas;

se usa o hibernate, no hibernate.cfg.xml deverá configurar a property connection.url, para o seu endereço por exemplo:

jdbc.mysql://enderecoDaAplicação/nomeDaBase;

Não sei se te ajuda, mas esses simples passos deram certo aqui;

Qualquer coisa estamos ae para ajudar;

sobre o End-Point ele já vem pré configurado, e não será necessario configurar, por via das duvidas caso queira conferir, ele se encontra no services-config.xml, no pacote gerado pelo blazeDS;

Na hora em que você realiza o Export Build Release você redireciona para a pasta raiz > WebContent > NomeProjeto ??
porque assim continua com o mesmo problema.
Outra coisa você configura a sua no projeto a sua url ou deixa do jeito que está?
Os outros passos estão todos certos, vlw…

L

Surian seguinte cara tem um detalhe que vc precisa conferir ae, tinha me esquecido disso, a pasta WebContent tem que estar com o mesmo nome do seu projeto;

Export Build Release, na verdade ele diminui o tamanho da sua aplicação, e ainda não deixa os seus fontes visiveis;

Outra coisa você configura a sua no projeto a sua url ou deixa do jeito que está?

Não entendi a pergunta brother… de qual Url vc está falando ??? se for a do Hibernate, ela está direcionando(quando local) para localhost:8080/nomeDaBase;

Quando vc envia para um Servidor Externo, vc deve mudar a URL para: jdbc:nomeDoBanco:// o endereço do sistema(já na web) / o nome da sua base

Ou não é isso que vc está perguntando???

S

LeandroMario:
Surian seguinte cara tem um detalhe que vc precisa conferir ae, tinha me esquecido disso, a pasta WebContent tem que estar com o mesmo nome do seu projeto;

Export Build Release, na verdade ele diminui o tamanho da sua aplicação, e ainda não deixa os seus fontes visiveis;

Outra coisa você configura a sua no projeto a sua url ou deixa do jeito que está?

Não entendi a pergunta brother… de qual Url vc está falando ??? se for a do Hibernate, ela está direcionando(quando local) para localhost:8080/nomeDaBase;

Quando vc envia para um Servidor Externo, vc deve mudar a URL para: jdbc:nomeDoBanco:// o endereço do sistema(já na web) / o nome da sua base

Ou não é isso que vc está perguntando???

ta deixa eu ver se entendi a pasta localizada na raiz do projeto chamada WebContent deve ter o nome alterado para o nome do meu projeto. e isso mesmo?
Quanto a url não estava me referindo a do banco e sim aquela que é configurada com http:localhost:8080/nomedoprojeto como padrão!

L

E mais um detalhe a se conferir é que vc precisa dizer ao compilador do Flex que existe um servidor de AMF levantado.

Para isso de um botão direito no seu projeto -> Properties -> Selecione Flex Compiler -> em Additional compiler arguments adicione a linha:

-services “…/WebContent/WEB-INF/flex/services-config.xml” -locale en_US

Adaptando essa linha a sua aplicação, por exemplo: onde tem WebContent, vc vai colocar o nome compativel ao seu WebContent, que deve ser o mesmo nome do seu projeto;

Aos poucos vc vai chegando mais perto da solução, demora um pouco pra acertar, mas depois vc não vai se bater mais.

L

Essa URL que vc está falando é a que usa para Executar o seu Projeto no Navegador correto ???

Se for isso, ela não é configurada manualmente, ela é executada assim por que vc está usando um servidor local;

quando vc subir o seu projeto para o servidor vc vai abrir pelo navegador algo como;

www.intec.inf.br/nomeDoMeuProjeto assim que eu acesso o meu sistema;

S

Beleza, só que quando mudo o nome de WebContent para o nome do meu projeto mesmo configurando em flex compiler ele não recolhece as minhas bibliotecas que estou usando que é o Driver MySQL(não uso nenhum framework para gravar os dados) e do iReport

se ajudar eu agora estou imprimindo a mensagem do erro completa que é:

(mx.messaging.channels::AMFChannel)#4
          initialDestinationId = (null)
          messageAgents = (Array)#9
            [0] (mx.rpc::AsyncRequest)#10
              authenticated = false
              autoConnect = true
              channelSet = (mx.messaging::ChannelSet)#6
              clientId = (null)
              connected = false
              defaultHeaders = (null)
              destination = "destino_usuario"
              id = "7E8538E8-D454-1D6C-6DD6-709410A7072E"
              reconnectAttempts = 0
              reconnectInterval = 0
              requestTimeout = -1
              subtopic = ""
      connected = false
      connectTimeout = -1
      enableSmallMessages = true
      endpoint = "http://www.meuservidor.com.br/PrjSistema/messagebroker/amf"
      failoverURIs = (Array)#11
      id = "my-amf"
      mpiEnabled = false
      netConnection = (flash.net::NetConnection)#12
        client = (mx.messaging.channels::AMFChannel)#4
        connected = false
        objectEncoding = 3
        proxyType = "none"
        uri = "http://www.meuservidor.com.br/PrjSistema/messagebroker/amf"
      piggybackingEnabled = false
      polling = false
      pollingEnabled = true
      pollingInterval = 3000
      protocol = "http"
      reconnecting = false
      recordMessageSizes = false
      recordMessageTimes = false
      requestTimeout = -1
      uri = "http://{server.name}:{server.port}/PrjSistema/messagebroker/amf"
      url = "http://{server.name}:{server.port}/PrjSistema/messagebroker/amf"
      useSmallMessages = false
    channelId = "my-amf"
    connected = false
    currentTarget = (mx.messaging.channels::AMFChannel)#4
    eventPhase = 2
    faultCode = "Channel.Connect.Failed"
    faultDetail = "NetConnection.Call.Failed: HTTP: Failed: url: 'http://www.meuservidor.com.br/PrjSistema/messagebroker/amf'"
    faultString = "error"
    reconnecting = false
    rejected = false
    rootCause = (Object)#13
      code = "NetConnection.Call.Failed"
      description = "HTTP: Failed"
      details = "http://www.meuservidor.com.br/PrjSistema/messagebroker/amf"
      level = "error"
    target = (mx.messaging.channels::AMFChannel)#4
    type = "channelFault"
  timestamp = 0
  timeToLive = 0
L

Olha Surian, sobre o caso do WebContent talvez vc tenha que recriar o seu projeto, estou dizendo talvez por que pode ser exista alguma outra forma, mas eu defino o nome da WebContent no momento da criação do projeto.

Esse Log do erro vc postou, vc editou alguma coisa dele ???

Tem algumas coisas estranhas aqui, por exemplo:

destination = "destino_usuario"  

endpoint = "http://www.meuservidor.com.br/PrjSistema/messagebroker/amf"  

uri = "http://{server.name}:{server.port}/PrjSistema/messagebroker/amf"  
url = "http://{server.name}:{server.port}/PrjSistema/messagebroker/amf"

por exemplo o meu destination, aponta para a minha classe Services.java

meu end-point fica como padrão mesmo

Dê uma analisada melhor ai cara, talvez seus erros estejam atrelados a esses detalhes;

S

Alterei apenas onde está http://www.meuservidor.com.br/ que aparecei o nome completo do meu servidor agora o resto nada, quanto ao destination = “destino_usuario” está assim mesmo na minha aplicação sendo que esse nome é uma referencia a minha classe configurada no arquivo remoting-config.xml(que é um arquivo de configuração do blazeds) nesse arquivo xml eu uso essa tag para referenciar minha classe:

<destination id="destino_usuario">
		<properties>
			<source>br.com.surian.persistencia.UsuarioDAO</source>
		</properties>
	</destination>

Quanto ao erro, será que é alguma coisa no apache tomcat que preciso configurar?

L

Pois bem cara, este endereço do www.meuser… , ele foi configurado no seu services-config como end-point ? Se sim vc deve voltar ao padrão como o exemplo que citei acima.

O erro é este aqui:
faultCode = "Channel.Connect.Failed"
faultDetail = "NetConnection.Call.Failed: HTTP: Failed: url: ‘http://www.meuservidor.com.br/PrjSistema/messagebroker/amf’"
faultString = “error”

Tinha o mesmo erro, quando tentava subir pra um servidor que não tinha suporte ao tomcat… Mas vc tem… então é erro de configuração mesmo;

Não sei no seu caso, mas tem um lance de quando vc importa o blazeDs para o seu projeto ele acaba não substituindo o seu web.xml, confira isso também…

S

LeandroMario:
Pois bem cara, este endereço do www.meuser… , ele foi configurado no seu services-config como end-point ? Se sim vc deve voltar ao padrão como o exemplo que citei acima.

O erro é este aqui:
faultCode = "Channel.Connect.Failed"
faultDetail = "NetConnection.Call.Failed: HTTP: Failed: url: ‘http://www.meuservidor.com.br/PrjSistema/messagebroker/amf’"
faultString = “error”

Tinha o mesmo erro, quando tentava subir pra um servidor que não tinha suporte ao tomcat… Mas vc tem… então é erro de configuração mesmo;

Não sei no seu caso, mas tem um lance de quando vc importa o blazeDs para o seu projeto ele acaba não substituindo o seu web.xml, confira isso também…

Não no meu service-config está do desse jeito

<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>

pelo que vi nesse caso ta tudo ok, eu falei que alterei só o nome da url onde mostra a mensagem de erro lá ele joga a minha url que estou acessando.

visualizando novamente a mensagem de erro percebi que ele é maior que aquilo inclusive ficou até bugada ao mostrar no ‘HAlert’ ele logo no inicio possui isso

(mx.messaging.messages::ErrorMessage)#0
  body = (Object)#1
  clientId = (null)
  correlationId = "AF2D64CD-8DE8-309B-5163-70D82AE923D3"
  destination = ""
  extendedData = (null)
  faultCode = "Client.Error.MessageSend"
  faultDetail = "Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: 'http://www.meuservidor.com.br/PrjSistema/messagebroker/amf'"
  faultString = "Send failed"
  headers = (Object)#2
  messageId = "FB0715AD-3B16-A7DB-9622-70D82BB1EAF3"
  rootCause = (mx.messaging.events::ChannelFaultEvent)#3
    bubbles = false
    cancelable = false
    channel = (mx.messaging.channels::AMFChannel)#4
      authenticated = false
      channelSets = (Array)#5
        [0] (mx.messaging::ChannelSet)#6
          authenticated = false
          channelIds = (Array)#7
            [0] "my-amf"
          channels = (Array)#8
            [0] (mx.messaging.channels::AMFChannel)#4
          clustered = false
          connected = false
          currentChannel = (mx.messaging.channels::AMFChannel)#4

o resto é aquilo que citei antes

L

Pior que cara eu nem precisei configurar nada no tomcat, a CentralServer me entregou o dominio pronto para subir o projeto, e ae foi de boa;

Fica complicado, pelo que vc falou está tudo dentro dos conformes, cara, o meu conhecimento se limita aqui, as dicas que poderia te passar eu já passei…

Veja se dá pra montar um passo a passo de como vc está subindo o projeto talvez fique mais facil de entender onde está o erro…

Mas aparentemente vc está com as configurações todas certas.

Se eu puder ajudar, é só chamar…

e se conseguir solucionar poste aqui a solução, este tópico poderá ajudar muita gente com problemas similares…

Valeu brother, boa sorte ae!!!

S

LeandroMario:
Pior que cara eu nem precisei configurar nada no tomcat, a CentralServer me entregou o dominio pronto para subir o projeto, e ae foi de boa;

Fica complicado, pelo que vc falou está tudo dentro dos conformes, cara, o meu conhecimento se limita aqui, as dicas que poderia te passar eu já passei…

Veja se dá pra montar um passo a passo de como vc está subindo o projeto talvez fique mais facil de entender onde está o erro…

Mas aparentemente vc está com as configurações todas certas.

Se eu puder ajudar, é só chamar…

e se conseguir solucionar poste aqui a solução, este tópico poderá ajudar muita gente com problemas similares…

Valeu brother, boa sorte ae!!!

Agradeço pelo interesse, vou continuar olhando aqui, inclusive vou verificar se é alguma coisa do apache que roda no servidor, vlw cara

T

meu deus velho.
mais 1 que nao uso o blazeds, php + zend melhor e bem mais facil hehehehe

S

Two_:
meu deus velho.
mais 1 que nao uso o blazeds, php + zend melhor e bem mais facil hehehehe

Vontade não falta só que o projeto já está pronto e também sou mais familiarizado com Java do que com PHP.

I

Caramba também estou na mesma :cry:

U

Caramba, peguei só o final, deu preguiça de olhar desde o início pq já vou indo dormir rs
Mas vou tentar ver isso aqui amanha, apanhei muito do Java + Flex (BlazeDS), hj em dia
tá tudo ok, então, se eu puder ajudar…

Abraços.

A

Galera,

Dêem um olhada nos exemplos que vem junto com o BlazeDS e comparem com os seus projetos.

I

Agradeço pela ajuda é que no momento ainda não estou testando as aplicações flex e java no servidor, a última que fiz realmente esse erro “Send Failed” aconteceu só que depois entreguei o .war para o cliente que também é programador e nem sei o que aconteceu depois.
No momento estou com 2 projetos utilizando java e flex quando for tentar roda-los no servidor volto aqui para ver as dicas e se não consegui eu peço uma ajuda!

vlw…

F

Manda o valor REMOTE_ENDPOINT do RemoteObject

Criado 8 de junho de 2011
Ultima resposta 3 de ago. de 2011
Respostas 34
Participantes 7