2015-01-22 4 views
0

Я знаю, что могу определить маршруты Camel в автономном XML-файле, используя синтаксис Blueprint. Если я переведу один из этих файлов в папку «deploy» ServiceMix, он автоматически станет пакетом OSGI. Мой вопрос: могу ли я установить конечную точку для этого нового пакета, доступного извне?установить конечную точку файла OSGI Blueprint в ServiceMix

Я хотел бы сделать что-то вроде этого:

blue_route1.xml

<blueprint> 
    <camelContext> 
    <route> 
     <from uri="http:my_servicemix:8181/blue_route1_endpoint" /> 
     <to uri="jetty:http://server1" /> 
    </route> 
    </camelContext> 
</blueprint> 

blue_route1 становится OSGi расслоения однажды развернутым, но где я должен определить "blue_route1_endpoint"? Это выполнимо?

[UPDATE]

летовок, я хочу, чтобы внешний WS может отправлять сообщения blue_route1_endpoint, где blue_route1 связка будет перенаправлять сообщения в соответствии с Camel маршрутам, без необходимости создания нового WS "Blue_route1" для развертывания в ServiceMix

        ______________________ 
            |  ____________ | 
external-->(blue_route1_endpoint)==|==-->|blue_route1|--|-->(http://server1) 
    WS        |  |___________| | 
            |____________________| 
              ServiceMix 
+0

Что значит доступный снаружи, вы имеете в виду использование HTTP? Затем вместо http используйте причал или компонент сервлета. –

+0

Я хочу, чтобы внешний WebService мог отправлять ему SOAP-сообщения. Возможно ли, или мне нужно создать «поддельный» WS для развертывания в ServiceMix, чтобы перенаправить сообщения с помощью верблюжьих маршрутов? Я обновил вопрос, пытаясь быть более понятным – DeLac

ответ

0

Нашел! Я не понял, что это так просто. Чтобы заставить ServiceMix прослушивать порт, мне просто нужно указать конечную точку, используя компонент Camel-jetty. Таким образом, чтобы ответить на мой вопрос, я решил таким образом:

установки верблюда-молов компонента в ServiceMix

features:install camel-jetty 

Написать верблюжьей маршрут с Концепцией, в blue_route1.xml файла

<?xml version="1.0" encoding="UTF-8"?> 
<blueprint 
    xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
    http://www.osgi.org/xmlns/blueprint/v1.0.0 
    http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> 
    <camelContext xmlns="http://camel.apache.org/schema/blueprint"> 
     <route> 
      <from uri:="jetty:http:my_servicemix:8181/blue_route1_endpoint"> 
      <to uri="http://localhost:8080/user/services/user?bridgeEndpoint=true&amp;throwExceptionOnFailure=false"/> 
     </route> 
     <route> 
      <from uri="jetty:http://0.0.0.0:6969/sp_role?matchOnUriPrefix=true"/> 
      <setHeader headerName="Content-Type"> 
       <groovy>"text/xml; charset=utf-8"</groovy> 
      </setHeader> 
      <to uri="http://server1"/> 
     </route>   
    </camelContext> 
</blueprint> 

Я использовал случайный порт 8181 для прослушивания ... но я мог выбрать каждый номер, ServiceMix автоматически запустит компонент причала, прослушивая и потребляющий этот порт/конечную точку.

0

Для сообщений SOAP вам нужны CXF Component и wsdl-файл вашего веб-сервиса. Вы можете настроить конечную точку за пределами camelContext, как это:

<cxf:cxfEndpoint id="yourId" address="/your/address/to/endpoint" 
    serviceClass="your.java.ServiceClass" 
    wsdlURL="path/to/your/wsdl/file.wsdl" /> 

И в вашем маршруте используйте тег так:

<from uri="cxf:bean:yourId"/> 

Вам нужно добавить пространство имен и SchemaLocation на ваш план использовать CxF пространство имен, используйте это:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf" 
xsi:schemaLocation=" 
     http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd 
     http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd 
     http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">