0

我需要在 mule 上发布两个具有相同路径但 URL 不同的服务。像这样

https://localhost:8443/etc/app/version1/Service

https://localhost:8443/etc/app/version2/Service

我在 web.xml 上使用 servlet 映射

<servlet-mapping>
        <servlet-name>muleServlet</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>

并尝试使用两个不同的连接器,因为路径属性不允许我使用“version1/Service”或“version2/Service”

<servlet:connector
    name="conectorVersion1"
    servletUrl="https://localhost:8443/etc/app/version1/">
</servlet:connector>

<servlet:connector
    name="conectorVersion2"
    servletUrl="https://localhost:8443/etc/app/version2/">
</servlet:connector>

最后,端点

   <flow
    name="FlowVersion1"
    processingStrategy="synchronous">

       <servlet:inbound-endpoint
        connector-ref="conectorVersion1"
        path="Service">
        <-- processors, jaxws-service, interceptors etc.. -->
       </servlet:inbound-endpoint>
    </flow>

   <flow
    name="FlowVersion2"
    processingStrategy="synchronous">

       <servlet:inbound-endpoint
        connector-ref="conectorVersion2"
        path="Service">
        <-- processors, jaxws-service, interceptors etc.. -->
       </servlet:inbound-endpoint>
    </flow>

但我得到了这个例外:

 [[/etc]] StandardWrapper.Throwable: java.lang.IllegalStateException: 
 There are at least 2 connectors matching protocol "servlet", so the connector to use must be 
 specified on the endpoint using the 'connector' property/attribute. 
 Connectors in your configuration that support "servlet" are: conectorVersion1, conectorVersion2, 

提前致谢。

4

1 回答 1

1

我不认为声明两个 servlet 连接器是有效的:只有一个 servlet 上下文,所以一个连接器就足够了。实际上,我从不声明 Servlet 连接器,因为默认配置可以正常工作。

所以只有以下配置:

<flow name="FlowVersion1" processingStrategy="synchronous">
    <servlet:inbound-endpoint
        path="version1/Service" />
    <set-payload value="version 1" />
</flow>

<flow name="FlowVersion2" processingStrategy="synchronous">
    <servlet:inbound-endpoint
        path="version2/Service" />
    <set-payload value="version 2" />
</flow>

我能够在 servlet 容器(Jetty)中进行部署,并且可以/{context}/app/version1/Service毫无问题/{context}/app/version2/Service地运行。

于 2013-02-08T17:53:46.320 回答