Bonsoir à tous,
Je vous explique mon soucis. Je désire réaliser un prototype de client web alliant Flex et JEE.
J'utilise Flash builder 4.5 et Blazeds. J'ai suivi un tutoriel très basique pour faire communiquer mon client en flex avec une classe JAVA.
Un simple bouton sur lequel j'appuie doit me renvoyer une fenêtre où il y a marqué hello. Le soucis c'est que j'ai un message de ce type:
faultCode:Client.Error.MessageSend faultString:'Send failed' faultDetail:'Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost/WebContent/messagebroker/amf''
J'ai déjà passé beaucoup de temps à vouloir résoudre cette erreur (recherche sur le web) et toujours pas de réponse. Il semble que le problème vienne des channels d'après mes dernières réflexions.
Voici les codes
MonTest.mxml
ma classe java
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 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Declarations> <!-- Placer ici les éléments non visuels (services et objets de valeur, par exemple). --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.AsyncToken; import mx.rpc.Responder; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.remoting.RemoteObject; private function callJava(event:MouseEvent):void { var javaObject : RemoteObject = new RemoteObject("hello"); var token : AsyncToken = javaObject.sayHello(); token.addResponder( new mx.rpc.Responder( handleResult, handleFault ) ); } private function handleResult(event : ResultEvent) : void { Alert.show(event.result.toString()); } private function handleFault(event : FaultEvent) : void { Alert.show(event.fault.message); } ]]> </fx:Script> <s:Button x="280" y="230" label="Contact Java" click="callJava(event)"/> </s:Application>
mon remoting-config.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 package test.pack; public class HelloSayer { public HelloSayer(){ } public String sayHello() { return "hello from java"; } }
et voici mon services-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 <?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="hello" channels="my-amf"> <properties> <source>test.pack.HelloSayer</source> <!-- <scope>application</scope> --> </properties> <adapter ref="java-object"/> </destination> </service>
Merci par avance de toutes vos remarques et réponses constructives à ce sujet.
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 <?xml version="1.0" encoding="UTF-8"?> <services-config> <services> <service-include file-path="remoting-config.xml" /> <service-include file-path="proxy-config.xml" /> <service-include file-path="messaging-config.xml" /> </services> <security> <login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/> </security> <channels> <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"/> <properties> <polling-enabled>false</polling-enabled> </properties> </channel-definition> </channels> <logging> <target class="flex.messaging.log.ConsoleTarget" level="Error"> <properties> <prefix>[BlazeDS] </prefix> <includeDate>false</includeDate> <includeTime>false</includeTime> <includeLevel>false</includeLevel> <includeCategory>false</includeCategory> </properties> <filters> <pattern>Endpoint.*</pattern> <pattern>Service.*</pattern> <pattern>Configuration</pattern> </filters> </target> </logging> <system> <redeploy> <enabled>false</enabled> </redeploy> </system> </services-config>
Partager