/ / Korzystasz z buforów protokołów w Javie EE? - java, java-ee, bufory protokołów

Korzystanie z buforów protokołów w Java EE? - java, java-ee, bufory protokołów

Zakodowałem serwer, który korzysta z buforów protokołóww Javie. Klient rozmawia z nim za pomocą PB. „Chciałbym przeprowadzić migrację kodu serwera do Java EE i skorzystać z wbudowanych funkcji kontenerów, takich jak klastrowanie.

Jak mogę uzyskać usługę, która odbiera wiadomości PB i odpowiednio je interpretuje, a następnie obsługuje?

Myślałem o dedykowanym typie serwletu, ale jak to zrobić?

Jestem nowicjuszem Java EE. Nie znam się wystarczająco dobrze na serwerach aplikacji Java EE, aby wiedzieć, czy istnieje sposób, aby tak się stało.

P.S. Szukam rozwiązania, które wykorzystuje bezpośrednio gniazda TLS. Nie są tu mile widziane protokoły pośredników, takie jak HTTP.

P.P.S. Proszę tylko o rozwiązania typu open source.

Odpowiedzi:

0 dla odpowiedzi № 1

Jeśli spojrzymy na klasy serwletów, sugerująże powinno być możliwe zbudowanie dowolnego serwletu obsługującego dowolny rodzaj protokołu, nie tylko HTTP (można by pomyśleć, że powinno być możliwe stworzenie własnego rodzaju serwletu, który rozszerza się GenericServlet, tak jak HttpServlet robi).

Jednak w praktyce nie jest to możliwe,ponieważ serwer Java EE, na którym będzie uruchomiony, najprawdopodobniej obsługuje tylko standardowe serwlety HTTP. Nie ma standardowego sposobu, aby serwery Java EE obsługiwały serwlety dla innych rodzajów protokołów. Zatem próba napisania własnego serwletu specyficznego dla protokołu nie jest dobrym rozwiązaniem.


0 dla odpowiedzi nr 2

Niestety Java EE nie oferuje standardowego sposobu dodawania nowych protokołów do serwerów.

Jedyne, co oferuje, to możliwość otwierania ServerSocketza pośrednictwem Architektura konektora Java. JCA jest dość skomplikowane, ale na szczęście Mark Jeffrey napisał łącznik o nazwie Gniazda JCA który zapewnia prosty, ogólny sposób na zrobienie tego. Za jego pomocą możesz pisać fasola oparta na wiadomościach wywoływane za każdym razem, gdy zostanie nawiązane połączenie z twoim ServerSocketi które mają wynikowe Socket przeszedł do nich; możesz wtedy zrobić wszystko, czego potrzebujesz, aby zdekodować i obsłużyć tam wiadomość protobuf.

Jeśli nie masz ochoty tego robić, możesz po prostu otworzyć ServerSocket bezpośrednio. Narusza to zasady Java EE, ale większość kontenerów pozwoli ci się z tym pogodzić.