Java + Flex (Conexao remota)

Olá pessoal,

Ainda numa aplicação Java + Flex, me deparei com um prob.
Rodo minha aplicação (no linux), e consigo executar as operações (serviços), sem problemas,
desde que eu teste no localhost, qdo tento acessar de um outro IP, dá erro, a n ser q eu defina
o ip no “endpoint”, mas daí eu ficaria limitado a uma rede.

No flex compiler eu tentei de tudo, a última estava assim:

-locale en_US -context-root "/orion" -services "/media/arquivos/projetos/orion/netbeans/orion/web/WEB-INF/flex/services-config.xml"

ObjectRemote:

	<mx:RemoteObject id="srvConta" destination="srvConta" showBusyCursor="true" fault="onFaultHandler(event)"
		endpoint="http://localhost:8080/orion/messagebroker/amf">

Parte do service-config.xml

 <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
           <endpoint url="http://localhost:8080/orion/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> 
 
            <!--<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> -->

        </channel-definition>

        <channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel"> 
            <endpoint url="https://localhost:8080/orion/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/> 
            <!--<endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/> -->
            <properties>
                <add-no-cache-headers>false</add-no-cache-headers>
            </properties>
        </channel-definition>
 
        <channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
            <endpoint url="https://localhost:8080/orion/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/> 

Erro:

 channelSet = (mx.messaging::ChannelSet)#6
              clientId = (null)
              connected = false
              defaultHeaders = (null)
              destination = "srvConta"
              id = "2CBC6049-7476-4008-3C07-D762DC46DE2C"
              reconnectAttempts = 0
              reconnectInterval = 0
              requestTimeout = -1
              subtopic = ""
      connected = false
      connectTimeout = -1
      enableSmallMessages = true
      endpoint = "http://localhost:8080/orion/messagebroker/amf"
      failoverURIs = (Array)#11
      id = (null)
      mpiEnabled = false
      netConnection = (flash.net::NetConnection)#12
        client = (mx.messaging.channels::AMFChannel)#4
        connected = false
        objectEncoding = 3
        proxyType = "none"
        uri = "http://localhost:8080/orion/messagebroker/amf"
      piggybackingEnabled = false
      polling = false
      pollingEnabled = true
      pollingInterval = 3000
      protocol = "http"

Alguém sabe onde estou vacilando?

Falew

No service-config.xml deixo sempre

Com isso não me preocupo em qual servidor está

Vc não mostrou o seu remote-config.xml, nele vc precisa configurar o destination srvConta, onde vc irá indicar qual a classe java deverá ser chamanda qd vc chamar este destination via RemoteObject, e com isso vc não precia configurar o endpoint no RemoteObject pq essa informação já estará no remote-config.xml.

[]s

Olá Fábio,

Eu tinha deixado assim, por padrão, como n funcionou (n sei pq), saí mudando.

Hj está assim.

services-config.xml

 <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> 
        </channel-definition>

       <channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>

            <properties>
                <polling-enabled>true</polling-enabled>
                <polling-interval-seconds>4</polling-interval-seconds>
            </properties>
        </channel-definition>

remoting-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" class="flex.messaging.services.RemotingService">

    <adapters>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
    </adapters>
 
    <default-channels>
        <channel ref="my-amf"/>
    </default-channels>  
       

    <destination id="srvConta" >
        <properties>
            <source>com.orion.service.ContaService</source>
        </properties>
    </destination>

RemoteObject

        <mx:RemoteObject id="srvConta" destination="srvConta" showBusyCursor="true" fault="onFaultHandler(event)">
		<mx:method name="getList" result="onResultGetList(event)"/>	
		<mx:method name="save" result="onResultEvent(event)" fault="onFaultSaveHandler(event)"/>
		<mx:method name="getById" result="onResultEvent(event)"/>
		<mx:method name="remove" result="onExcluirEvent()"/>
	</mx:RemoteObject>

Propriedades do felx compiler

-locale pt_BR  -context-root /orion -services "../WEB-INF/flex/services-config.xml"

Já mudei -context-root pra orion e “orion”.

Mas, do jeito q está, só conecta no java em localhost, tentando acessar de outra máquina,
mesmo virtual, dá o erro q falei.

Já criei uma classe com um método definindo o channel.

public static function getChannel():ChannelSet{
		var cs:ChannelSet = new ChannelSet();
                var customChannel:AMFChannel = new AMFChannel("my-amf", "http://localhost:8080/orion/messagebroker/amf");
                                
                cs.addChannel(customChannel);
                
                return cs;
		}	

E atribuia ao channelSet do srvConta e mesmo assim, nada.

Só que deparei com um detalhe:

<welcome-file>WebContent/orion.swf</welcome-file>

Ou seja, minha aplicação abre direto o swf, e deveria ser um JSP, correto?

Outro detalhe,

Mudei para startar com JSP chamando o meu swf, mas deu a mesma merlin…

Faz um teste como te comentei antes e deixa -context-root orion.
Isso deve funcionar.

Fábio,

Fiz um outro projeto do zero e refiz as configurações, está tudo ok.
Não sei qual era a barbeirabem.

De qq forma, brigadão!

Blz.
Nos argumentos adicionais de compilação não é necessário colocar o context pq isso fica configurado em outras abas, mas pode ocorrer os problemas listados nos dois posts abaixo;
http://fabiophx.blogspot.com/2010/03/context-root.html
http://fabiophx.blogspot.com/2010/05/context-root-ii.html

[]s