[Seasar-user:19600] Re: [S2BlazeDS] endpointの記述について

Taiki Matsuyama [E-MAIL ADDRESS DELETED]
2010年 4月 4日 (日) 17:01:15 JST


松山です。

ふと思い立って、Dolteng から新しいS2BlazeDSのプロジェクトを作成し、
WEB-INF/flex 以下の*.xml をコピーしたら、endpoint記述なしでも、
あっさり動くようになりました。お騒がせしました。

ただ、このとき気付いたのですが、{context.root} は、コンパイル時にセット
されてしまって、実行時に動的に変更されるわけではないようですね。
{server.name}{server.port} は動的にセットされているようですが。

> 松山です。
> ふなくらさん、こんにちは。
> 
>> Flexコンパイラの指定で-service引数を使ってservices-config.xmlを指定していますでしょうか?
> 
> 追加コンパイラ引数は、
> 
> -services "c:\hoge\hogeApp\src\main\webapp\WEB-INF\flex\services-config.xml"
> -locale ja_JP  -context-root /hogeApp
> 
> と指定しています。実際は1行です。
> 
> services-config.xml には、
> 
> <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
>      <endpoint
> uri="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"
> class="org.seasar.blazeds.endpoints.S2AMFEndpoint" />
>      <properties>
>          <polling-enabled>false</polling-enabled>
>      </properties>
> </channel-definition>
> 
> のように記述してあります。
> 
>>
>> RemoteObjectを使う場合は、Flexのコンパイル時に-service引数で指定されたxmlに
>> endpointの設定があるので、そちらを参照することで
>> RemoteObjectタグでendpointを指定しなくても、接続できます。
>>
>> 現在、Teeda + S2BlazeDSで開発されているとのことですが、Flex側のプロジェクトは
>> 同じプロジェクトでしょうか?それともs2blazeds-server-example とs2blazeds-client-example
>> のようにflexProjectを別にしていますでしょうか?
>>
>> 同じプロジェクトであるなら、プロジェクトのプロパティでFlexコンパイラの中にある追加コンパイラ引数で、プロジェクト内にあるWEB-INF/flex/services-config.xmlを-servicesで指定します。
>>
>> s2blazedsのサンプルのように別々であれば、クライアント側プロジェクトで
>> (s2blazeds-client-exampleに当たるプロジェクト)
>> サーバ側のプロジェクト以下にあるWEB-INF/flex/services-config.xmlを追加コンパイラ引数で
>> 指定します。
>>
>> コード(ActionScript)で指定する方法もありますがひと手間かかるのであまりしていません。
>>
>> 2はRemoteObjectタグ内でendpoint指定を置換される形式({servername})で
>> 試したことがないので、原因をつかめていません。
>>
>> まずはflexコンパイラの追加引数指定を確認してみてください。
>> 以上よろしくお願いいたします。
>>
>> --
>> ふなくら(nod)
>>
>>
>>
>>
>> 2010年4月4日2:06 Taiki Matsuyama<[E-MAIL ADDRESS DELETED]>:
>>> 松山です。
>>>
>>> それほど困っているわけではないのですが、ちょっとすっきりしないので質問
>>> させてください。
>>>
>>> Teeda + S2BlazeDS で開発をしています。
>>>
>>> 最初、どうしてもFlex とサーバとの通信ができないので、あれこれ試していて、
>>> <mx:RemoteObject>タグに、endpoint を記述したら正常に通信ができるように
>>> なりました。
>>> ただ、次のように記述しないと通信できません。
>>>
>>> endpoint="{'http://{server.name}:{server.port}/hogeApp/messagebroker/amf'}"
>>>
>>> hogeApp を、{context.root} と書くと通信に失敗します。
>>>
>>> しかし、S2BlazeDSのサンプルを見ても、<mx:RemoteObject>タグに、endpoint を
>>> 記述しなくても動作しているようです。
>>>
>>> すっきりしないのは次の2点です。
>>>
>>> 1. なぜ、サンプルはendpointを記述しなくても通信できているのか。
>>> 2. {server.name}や{server.port} は実行時に置き換えされているのに、
>>>    {context.root} は、なぜ置き換えられないのか。
>>>
>>> S2BlazeDSの問題ではない気もしますが、どのあたりの設定を確認すればいいでしょう?
>>>
>>> とりあえず、全ての<mx:RemoteObject>タグに、上記のendpoint を記述することで
>>> 動作しているので、それほど困ってはいませんが、たとえばテスト環境用にコンテキスト
>>> ルートを変更したApp をもう一つ起動したい、というときに、ちょっと困るので。
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> 



Seasar-user メーリングリストの案内