Как опубликовать два сервиса с одинаковым путем, но разными URL на Mule 3.2

Мне нужно опубликовать два сервиса с одинаковым путем на муле, но с разными URL. Как это

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

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

Я использую отображение сервлетов в web.xml

<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, 

Заранее спасибо.

1 ответ

Решение

Я не думаю, что это правильно объявить два соединителя сервлета: есть только один контекст сервлета, поэтому достаточно одного соединителя. На самом деле, я никогда не объявляю разъем 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>

Я могу развернуть в контейнере сервлетов (Jetty) и могу нажать /{context}/app/version1/Service а также /{context}/app/version2/Service без проблем.

Другие вопросы по тегам