Как опубликовать два сервиса с одинаковым путем, но разными 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
без проблем.