[RESOLVIDO] Dúvida Configurar Flex + GraniteDS + Java + Eclipse

Boa tarde pessoal!

Estou iniciando com o graniteDS, apos apanhar um bucado com o BlazeDS e o lazyLoad do Hibernate, estou fazendo a migração para o GranideDS porém, não estou conseguindo fazer a chamada das classes java. Segui a documentação do GraniteDS e exemplos mais sem sucesso.

Meus xmls:

<!--################################ Web.xml ########################-->

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>GraniteDS Pojo</display-name>
    <description>GraniteDS Pojo Application</description>

    <!-- Granite config context listener -->
    <listener>
        <listener-class>org.granite.config.GraniteConfigListener</listener-class>
    </listener>

   
    <context-param>
        <param-name>servicesConfigPath</param-name>
        <param-value>/WEB-INF/flex/services-config.xml</param-value>
    </context-param>
    <context-param>
        <param-name>graniteConfigPath</param-name>
        <param-value>/WEB-INF/granite/granite-config.xml</param-value>
    </context-param>
  
    <filter>
        <filter-name>AMFMessageFilter</filter-name>
        <filter-class>org.granite.messaging.webapp.AMFMessageFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>AMFMessageFilter</filter-name>
        <url-pattern>/graniteamf/*</url-pattern>
    </filter-mapping>

    <servlet>
        <servlet-name>AMFMessageServlet</servlet-name>
        <servlet-class>org.granite.messaging.webapp.AMFMessageServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>AMFMessageServlet</servlet-name>
        <url-pattern>/graniteamf/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

<!--################################ services-config.xml ########################-->
<?xml version="1.0" encoding="UTF-8"?>
<services-config>

    <services>
        <service
            id="granite-service"
            class="flex.messaging.services.RemotingService"
            messageTypes="flex.messaging.messages.RemotingMessage">
            <destination id="pojo">
                <channels>
                    <channel ref="my-graniteamf"/>
                </channels>
                <properties>
                    <scope>session</scope>
                    <source>test.pojo.PojoService</source>
                </properties>
            </destination>
        </service>
    </services>

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

</services-config>
<!--################################ Application xmxl - Flex ########################-->
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns="*"
    layout="vertical"
    backgroundGradientColors="[#0e2e7d, #6479ab]"
    verticalAlign="middle"
    creationComplete="srv.getCounter()">

    <mx:RemoteObject id="srv" showBusyCursor="true" destination="pojo" />

    <mx:Panel title="Just a Counter (Session Scope)" verticalAlign="middle"
        horizontalAlign="center" paddingTop="8" paddingBottom="8" titleIcon="@Embed('network.png')">
        <mx:Label text="{srv.getCounter.lastResult}" />
        <mx:Button label="Go" click="srv.getCounter()"/>
        <mx:Text htmlText="&lt;i&gt;(try to reload window)&lt;/i&gt;"/>
    </mx:Panel>

</mx:Application>

Ocorre o seguinte erro:


MessagingError = 'O destino 'pojo' não existe ou não tem canais definidos (e o aplicativo não define nenhum canal padrão).'

FailutDetail: Não foi possível estabelecer conexão com 'pojo'

Coloqueio o granite.jar na pasta lib também.

Alguém sabe o porque ele dá esse erro e o que fiz de errado?

Também fiz essa migração há pouco tempo.
Você tem o projeto Flex e Java separados, ou juntos no mesmo projeto?

[quote=RafaelViana]Também fiz essa migração há pouco tempo.
Você tem o projeto Flex e Java separados, ou juntos no mesmo projeto?[/quote]

Olá RafaelViana.

Estão juntos noi mesmo projeto. Eu criei um projeto JavaFlex com o plugin da adobe. E como você resolveu esse problema?

Eu usei em projetos separados. Para esse erro, se eu não me engano, foi só definir um channelSet para o RemoteObject. Porém, como você está utilizando no mesmo projeto não deveria ocorrer esse erro.

Bom dia RafaelViana!

Então eu fiz um teste colocando colocando um valor no endPoint do remoteObject e funcionou… Só que agora eu estou tendo o seguinte erro:


07/05/2011 13:53:20 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet AMFMessageServlet threw exception
java.lang.NoSuchMethodError: flex.messaging.messages.Message.toString(Ljava/lang/String;)Ljava/lang/String;
	at org.granite.messaging.amf.AMF0Body.printValue(AMF0Body.java:283)
	at org.granite.messaging.amf.AMF0Body.printValue(AMF0Body.java:303)
	at org.granite.messaging.amf.AMF0Body.toString(AMF0Body.java:269)
	at org.granite.messaging.amf.AMF0Message.toString(AMF0Message.java:147)
	at org.granite.messaging.amf.AMF0Message.toString(AMF0Message.java:119)
	at org.granite.logging.DefaultLoggingFormatter.convert(DefaultLoggingFormatter.java:152)
	at org.granite.logging.DefaultLoggingFormatter.format(DefaultLoggingFormatter.java:54)
	at org.granite.logging.Log4jLogger.debug(Log4jLogger.java:93)
	at org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:115)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)

Você sabe oq pode ser?

Abraços

Bom o E

Consegui resolver o problema… Era só remover umas dependencias “Jars” do do blazeDS que estavam no class path.

Mais ainda tenho uma dúvida:

Quando tenho uma relação 1 … n o GraniteDS dá suporte para que não ocorra o LazyLoadException… Mais eu vi que ele carrega toda a minha lista que está em Lazy.

Alguém sabe como inabilitar isso?

Como está o mapeamento da sua entidade?

Bom dia RafaelViana

Está assim: (é um projeto de teste por isso os nomes)

@Entity
@Table(name="A")
public class A implements Serializable {
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id", nullable = false)
	private Long id;
	
	@Column(name = "descricao", length = 100)
	private String descricao;

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "a")
	private Set<B> bs = new HashSet<B>();

       //Gets e sets

E a outra :

@Entity
@Table(name="B")
public class B implements Serializable {
	
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "idB", nullable = false)
	private Long id;
	
	@Column(name = "descricao", length = 100)
	private String descricao;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "bId", nullable = false)	
	private A a;

       //Gets e Sets

Abraços

Bom dia,

Estou com problemas na integração do Seam com o adobe flex, também utilizaei o tutorial do graniteds.
Consigo chamar os meus metodos no bean, porém a cada click q eu dou em qualquer parte da area da pagina flex ele cria uma nova instancia do meu bean, tornando nulo todos os meus atributos.

Alguem sabe como resolver este problema???

Desde ja muito obrigado.