0

Spring BlazeDS Integration を使用したい。

私はそれらをこのように書きます。

[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>

ということで、Flexアプリケーションから「hogeService」をこのように呼び出します。

var ro:RemoteObject = new RemoteObject();
ro.destination = "hogeService";
ro.hoge(); // HogeServiceImpl class has "hoge" method with no arguments.

すると、このようなエラーメッセージが表示されました。

[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="メッセージ送信先への接続を確立できませんでした。"]

このエラー メッセージが表示されるのはなぜですか? そして解決策を教えてください..

4

2 に答える 2

2

services-config.xml がフラグ compiler.services としてフレックス コンパイラ (compc または mxmlc) にも渡されていることを確認してください。

または、次のように、RemoteObject にチャネルを構築させることもできます (これにより、クライアントとサーバー構成が完全に分離されます)。

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();
于 2011-01-24T10:37:10.720 に答える
0

Spring BlazeDS 統合の最新バージョンでは、Spring ディスパッチャーに何かを追加するだけで機能しますが、Flex 自体にはすべての services-config.xml などが必要だと思います。

<flex:message-broker>
  <flex:message-service default-channels="amf"/>
</flex:message-broker>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
    <value>
      /*=_messageBroker
    </value>
  </property>
</bean>
<bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter"/>
于 2011-01-24T17:07:07.583 に答える