我有以下代码在“http://localhost:8080/alpha”配置 Jersey 服务:
*** 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”下的所有地址,除了“http://localhost:8080/alpha”(例如“http://localhost:8080/beta”) . 这些新地址需要一个球衣资源。例如:
*** 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() {...}
...
}
我如何设置 mule 入站端点以捕获所有地址(即 beta 和 gamma),除了特定的 url(即 alpha)。
我知道我可以对 mule 配置中的路径进行硬编码,但这会导致重复,因为每个地址(即 beta 和 gamma)都需要自己的流和资源代码,它们是相似的。
请注意,我在上面的代码中使用了“http://localhost:8080/*”作为概念示例。这没用。
- - 更新 - -
我忘了提到 beta 和 gamma uri 也具有与它们相关的安全性,使用:
<http:inbound-endpoint ...>
<spring-security:http-security-filter realm="mule-realm"/>
</http:inbound-endpoint>
我尝试向端点添加“选择”元素,但它抱怨 spring-security 在选择决策结构中无效。
解决方案还需要适应此功能。