「http://localhost:8080/alpha」でジャージー サービスを構成する次のコードがあります。
*** my mule config ***
<flow name="flow1">
<inbound-endpoint address="http://localhost:8080/" exchange-pattern="request-response" />
<jersey:resources>
<component>
<singleton-object class="com.address.Flow1Resource"/>
</component>
</jersey:resources>
</flow>
*** Flow1Resource.java ***
@Path("/alpha")
public class Flow1Resource {...}
「http://localhost:8080/alpha」を除く「http://localhost:8080」の下のすべてのアドレスを処理する新しい受信エンドポイントを追加したい (例: 「http://localhost:8080/beta」) . これらの新しいアドレスには、1 つのジャージー リソースが必要です。例えば:
*** my mule config ***
<flow name="flow1">
<inbound-endpoint address="http://localhost:8080/" exchange-pattern="request-response" />
<jersey:resources>
<component>
<singleton-object class="com.address.Flow1Resource"/>
</component>
</jersey:resources>
</flow>
<flow name="flow2">
<inbound-endpoint address="http://localhost:8080/*" exchange-pattern="request-response" />
<jersey:resources>
<component>
<singleton-object class="com.address.Flow2Resource"/>
</component>
</jersey:resources>
</flow>
*** Flow1Resource.java ***
@Path("/alpha")
public class Flow1Resource {...}
*** Flow2Resource.java ***
@Path("/")
public class Flow2Resource {
@Path("beta")
public void beta() {...}
@Path("gamma")
public void gamma() {...}
...
}
特定の URL (つまりアルファ) を除いて、すべてのアドレス (つまりベータとガンマ) をキャプチャするようにミュール インバウンド エンドポイントを設定するにはどうすればよいですか。
ミュール構成でパスをハードコーディングできることはわかっていますが、各アドレス (つまり、ベータとガンマ) には独自のフローとリソース コードが必要になるため、重複が発生します。
上記のコードでは、概念的な例として "http://localhost:8080/*" を使用したことに注意してください。それは動作しません。
- - アップデート - -
beta と gamma uri には、以下を使用してセキュリティが関連付けられていることを忘れていました。
<http:inbound-endpoint ...>
<spring-security:http-security-filter realm="mule-realm"/>
</http:inbound-endpoint>
エンドポイントに「choice」要素を追加しようとしましたが、choice 決定構造内で spring-security が無効であると不平を言いました。
この機能に対応するソリューションも必要です。