Flex Cairngorm Spring Blazeds - リモート処理エラー - 助けてください
-
18-09-2019 - |
質問
Flex/Cairngorm アプリケーションからリモート Java クラス (Spring/BlazeDS 上) にアクセスしようとすると、次のエラーが発生するようです。私は今、何が問題なのかを調べようとして気が狂いそうになっています - 助けていただければ幸いです - マイクに感謝します。
**Error: C0007E: RemoteObject not found for mycomponentsService
at RemoteObjects/getService()
at com.adobe.cairngorm.business::ServiceLocator/getRemoteObject()
at com.nomura.dashboard.client.business::DashBoardDelegate()**
私のすべての設定ファイルは以下のとおりです。
ケアンゴーム - BusinessDelegate.as
this.service = ServiceLocator.getInstance().getRemoteObject("**mycomponentsService**");
ケアンゴーム - Services.mxml
mx:RemoteObject id="mycomponentsService"
destination="remotecomponentService"
showBusyCursor="true">
Spring/BlazeDS - application-config.xml
flex:remote-service ref="remotecomponentService"
bean id="remotecomponentService"
class="com.mycompany.dashboard.server.dao.ComponentsDAO"
Spring/BlazeDS - services-config.xml
channel-definition id="myamf" class="mx.messaging.channels.AMFChannel"
endpoint url="http://localhost:8080/dashboard-server/spring/messagebroker/amf"
class="flex.messaging.endpoints.AMFEndpoint"
web.xml には Spring 参照も含まれています - 以下を参照してください。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4">
<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<display-name>dashboard-server</display-name>
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/*-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map /spring/* requests to the DispatcherServlet -->
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/spring/*</url-pattern>
</servlet-mapping>
</web-app>
解決
web.xml もご覧いただけますか?その言葉を見てびっくりしました "春" エンドポイント URL に。私のエンドポイントは常に次のように見えました
url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"
例えば。:services-config.xml は次のようになると思います。
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}/dashboard-server/messagebroker/amf"
class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
また、エンドポイント URL をあまりハードコーディングしないことをお勧めします。ただ一緒に行きましょう
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint class="flex.messaging.endpoints.AMFEndpoint"
url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" />
</channel-definition>
アップデート:
OK、web.xml も問題ないようです。 spring
URLに。Spring 構成ファイルに表示されないもの (application-config.xml
) は Spring URL マッピングです。たとえば、私の Spring 構成ファイルには、Bean 定義に加えてマッピングがあります。例えば。:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/histogram/**=bean.HistogramController
/counter/**=bean.CounterController
</value>
</property>
</bean>
<bean id="bean.HistogramController" class="ch.comp.app.HistogramXportController" />
<bean id="bean.CounterController" class="ch.comp.app.CounterXportController" />
(Spring ベースのアプリが 1 つと、BlazeDS を使用するアプリが 1 つありますが、両方ではないため、何かが欠けている可能性があります。そうは言っても、私が尋ねていることは依然として有効であるはずです。理論的には。ただし、割り引いて考えてください。)
おそらく、いくつかの超基本的なデバッグが必要になるでしょう。サーバーへの呼び出しが戻っているかどうかを確認していただけますか HTTP 404
これらの問題のエンドポイントに問題があるのかどうか?これを行うには、いくつかの方法があります。
- アクセスログを確認してみると、
GET /dashboard-server/spring/messagebroker/amf
. 。これらのリクエストの HTTP ステータス コードは何ですか? (無料、簡単、新しいツールは不要です。) - ブラウザとして FireFox を使用している場合は、 データの改ざん プラグインします。データを改ざんする必要はありませんが、呼び出されている内容、返された内容、およびすべての HTTP ヘッダーが表示されます。
- 次のような完全な Flash/Flex 指向のプロトコル スニッファ ツールを使用します。 Charles Web デバッグ プロキシ.
問題を絞り込んで、これらのリクエストが通信スタックのどこで失敗しているかを知ることは非常に役立ちます。
他のヒント
以下に web.xml を添付しました。「Spring」という言葉に関しては、「spring」が必要な標準の BlazrDS/Spring 統合 WAR ファイルを使用しています。Bean id="remotecomponentService" は、実際には Spring Bean です。
BlazeDS/Spring WAR でも上記のソリューションを使用できるということですか?
web.xml には Spring 参照も含まれています - 以下を参照してください。
<web-app version="2.4">
<display-name>dashboard-server</display-name>
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/*-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map /spring/* requests to the DispatcherServlet -->
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/spring/*</url-pattern>
</servlet-mapping>
</web-app>