tłumaczenia. Dlatego też wykorzystany został kontener OSGi Apache Felix na platformie ServiceMix 4.2. Przepływ danych wg głównego scenariusza jest następujący:
1. Web Service udostępniający naszą usługę użytkownikom końcowym na zewnątrz otrzymuje żądanie, które po odpowiednim opakowaniu i przetworzeniu umieszcza w uprzednio zdefiniowanym katalogu, zwracając jednocześnie użytkownikowi unikalny token (wersja asynchroniczna).
2. Camel przechwytuje żądania umieszczone w ustalonym katalogu, które po konwersji do formatu XML przekazuje do serwisu Ocr Proxy. Sama implementacja Ocr Proxy jest również wyszukiwana automatycznie w kontenerze OSGi.
3. Ocr proxy przekazuje wiadomość z żądaniem do wyszukanego przez siebie serwisu lub przekazuje informację o błędzie, która powoduje automatyczny routing wiadomości do katalogu wyjściowego.
4. Po rozpoznaniu tekstu, w razie braku błędów wiadomość przekazywana jest do TranslationProxy, które w wypadku odnalezienia odpowiedniego serwisu tłumaczącego dokonuje z jego użyciem tłumaczenia, a wiadomość przekazywana jest dalej, do outputtera.
5. Zamiast tradycyjnego, camelowego <to uri="file:" zmuszeni zostaliśmy wykorzystać własny bean zapisujący do pliku, albowiem Camel za nic ma podane przez użytowanika kodowanie (przyjmując zawsze systemowe).
Dopuszczalny są również scenariusze alternatywne:
Np.
Web serwis udostępnia usługę pobierającą tekst jako string i kierujący go do samej tylko
translacji. W tym celu istnieje osobny Camel Route.
Definicje tras wykonano z użyciem języka Spring DSL.
Rejestrowanie i wyrejestrowywanie serwisów w kontenerze
Istnieją trzy główne sposoby na zarejestrowanie przez bundle oferowane serwisu w rejestrze kontenera.
1. Prosto z kodu, przy aktywacji danej klasy, z użyciem BundleActivatora. Jest to rozwiązanie najmniej eleganckie i elastyczne, dodatkowo wymagające definiowania aktywatorów dla wszystkich bundli oferujących serwisy.
2. Z użyciem Spring DM.
Jest to rozwiązanie bodajże najbardziej rozpowszechnione, oferujące zarówno ogłaszanie jak i pobieranie serwisów za pomocą tagów XML w kontekście Springa. Niestety jest jednak już nieco przestarzałe i wypierane przez rozwiązanie nr 3.
<service ref="beanToBeExportedn Interface="com.xyz.MyServiceInterface"> <service-properties>
<beans:entry key="myOtherKey" value="aStr±ngValue"/>
<beans:entry key="aThirdKey" value-ref="beanToExposeAsProperty"/>
</service-properties>
</service>
3. Blueprint Container - jest to rozwiązanie najnowsze, włączone do specyfikacji OSGi 4.2. Niestety ze względu na fazę „incubating" projektu zawiera on liczne