Bonjour tous,

Je cherche à faire communiquer des EJB java avec mon application Flex, dans le but à terme de remplacer la couche JSF d'un portail par du flex.
J'utilise un server Glassfish pour faire cela.

A priori j'ai choisit d'utiliser GraniteDS pour réaliser cela ( il m'a semblé que GraniteDS etait plus orienté EJB que BlazeDS...Si ce n'est pas le cas , je ne suis pas contre des avis avec BlazeDS voir un comparatif des deux :] )

Pour commencer donc j'ai suivis l'exemple que l'on trouve sur le site de graniteDS:
http://www.graniteds.org/confluence/...ternalization)

Toute fois une erreur persiste je ne trouve vraiment pas comment la corriger :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[RPC Fault faultString="" faultCode="Could not lookup for: helloworld/HelloWorldServiceBean/local" faultDetail="nullorg.granite.messaging.service.ServiceException
	at org.granite.messaging.service.EjbServiceInvoker.<init>(EjbServiceInvoker.java:65)
	at org.granite.messaging.service.EjbServiceFactory.getServiceInstance(EjbServiceFactory.java:126)
	at org.granite.messaging.amf.process.AMF3MessageProcessor.processRemotingMessage(AMF3MessageProcessor.java:135)
	at org.granite.messaging.amf.process.AMF3MessageProcessor.process(AMF3MessageProcessor.java:59)
	at org.granite.messaging.amf.process.AMF0MessageProcessor.process(AMF0MessageProcessor.java:71)
	at org.granite.messaging.webapp.AMFMessageServlet.doPost(AMFMessageServlet.java:59)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
	at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:333)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
	at org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:100)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:313)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
	at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
	at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
	at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
	at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: javax.naming.NameNotFoundException
	at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:268)
	at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:191)
	at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
	at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
	at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:409)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at org.granite.messaging.service.EjbServiceFactory.lookup(EjbServiceFactory.java:60)
	at org.granite.messaging.service.EjbServiceInvoker.<init>(EjbServiceInvoker.java:63)
	... 39 more
"]
	at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()
	at mx.rpc::Responder/fault()
	at mx.rpc::AsyncRequest/fault()
	at NetConnectionMessageResponder/statusHandler()
	at mx.messaging::MessageResponder/status()
Je pense que l'erreur viendrait se fichier de config :

service-config.xml:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?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="helloWorldService">
                <channels>
                    <channel ref="my-graniteamf"/>
                </channels>
                <properties>
                    <factory>ejbFactory</factory>
                </properties>
            </destination>
        </service>
    </services>
    
         <!-- 
    <factories>
		<factory id="ejb3" class="com.adobe.ac.ejb.EJBFactory" />
	</factories>
          -->   
    <factories>
        <factory id="ejbFactory" class="org.granite.messaging.service.EjbServiceFactory">
          <properties>
                <lookup>helloworld/{capitalized.destination.id}Bean/local</lookup>
<!--<lookup> java:comp/env/Welcome </lookup>
<lookup>java:comp/env/{capitalized.destination.id}Bean</lookup>
  testé ces deux facon de faire sans succes-->
            </properties>
        </factory>
    </factories>

    <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>
Au niveau de la balise lookup donc...Pour le reste mon projet est en tout point identique à celui du site.