I want to use Spring BlazeDS Integration.
I write them like this.
[web.xml]
<servlet>
<servlet-name>flex</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>flex</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
[WEB-INF/classes/applicationContext.xml]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:flex="http://www.springframework.org/schema/flex"
xsi:schemaLocation="
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<flex:message-broker/>
<bean id="hogeService" class="hoge.HogeServiceImpl">
<flex:remoting-destination />
</bean>
</beans>
[WEB-INF/flex/services-config.xml]
<services-config>
<services>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
</services>
<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"/>
</channel-definition>
</services-config>
So, I call "hogeService" from Flex application like this.
var ro:RemoteObject = new RemoteObject();
ro.destination = "hogeService";
ro.hoge(); // HogeServiceImpl class has "hoge" method with no arguments.
Then, I got an error message like this.
[RPC Fault faultString="[MessagingError message='Destination 'hogeService' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']" faultCode="InvokeFailed" faultDetail="メッセージ送信先への接続を確立できませんでした。"]
Why do I get this error message ? And please tell me any solutions..
Make sure you have have your services-config.xml also passed to the flex compiler (compc or mxmlc) as the flag compiler.services.
Alternatively, you can let the RemoteObject build the channel (which then decouples the client and the server config completely), like so:
var ro:RemoteObject = RemoteObject();
ro.endpoint = "http://{server.name}:{server.port}/{context.root}/messagebroker/amf"; // this internally constructs an AMFChannel or SecuredAMFChannel depending on the protocol
ro.hoge();