Jak skonfigurować Netty w Spring MVC. Kiedy i gdzie powinienem uruchomić serwer Netty tcp? Czy powinienem zainicjować netty po rozpoczęciu Wiosny? Czy ktoś może pokazać mi przykład, taki jak plik xml konfiguracji Spring lub coś innego? Dzięki!Połączyć Netty i Spring MVC
Odpowiedz
Wystarczy utworzyć Bean z start
i stop
metod, które są odpowiedzialne za uruchamianie i wyłączanie serwera Netty a następnie zarejestrować fasoli w kontekście z właściwymi startowych i zniszczyć haczyki, np
<bean id="myNettyServer" class="x.y.z.MyNettyServer" init-method="start" destroy-method="shutdown"/>
Or alternatywnie użyj adnotacji @PostConstruct
i @PreDestroy
, jeśli nie chcesz używać konfiguracji XML.
Wielkie dzięki! To bardzo pomaga! – lute
To naprawdę zależy od tego, do czego używasz Netty. Zakładając, że używasz go jako wbudowanego serwera HTTP działającego na oddzielnym porcie, możesz go po prostu zainicjować w komponencie Spring. Mam osiągnięte w przeszłości za pomocą przydatnych opakowanie Netty/Atmosfera nazwie Nettosphere:
@Service
public class NettyServer implements ServletContextAware {
private ServletContext servletContext;
private Nettosphere server;
@Autowired
private MyStatusHandler statusHandler;
@PostConstruct
public void initialiseNettyServer() {
String rootPath = servletContext.getContextPath() + "/api";
server = new Nettosphere.Builder().config(
new Config.Builder()
.host(SERVER_HOST)
.port(SERVER_PORT)
.resource(rootPath + "/status", statusHandler)
.build())
.build();
server.start();
}
@PreDestroy
public void shutdownNettyServer() {
server.stop();
}
}
ten zakłada annotation-based configuration wiosną, można łatwo osiągnąć ten sam efekt przy użyciu języka XML, jak wyjaśniono w Jonathan's odpowiedź.
Oczywiście, możesz preferować użycie Netty bezpośrednio, w takim przypadku ta sama zasada ma zastosowanie, ale będziesz musiał zagłębić się w , aby poprawnie załadować serwer.
To naprawdę ma sens. Dzięki! – lute
Wariant 1 (tylko kod):
Oto naprawdę dobry przykład pokazujący jak bootstrap Netty z obsługi wspieranie Servlets (który z kolei przekaże zadanie do wiosennego MVC) https://github.com/rstoyanchev/netty-spring-mvc
Tam określenie ServletNettyHandler Plus Java oparte configurer Wiosna MCV (DispatcherServletChannelInitializer), a TestController zastosowania @Controller & @RequestMapping adnotacje, jak zawsze w takich przypadkach.
Uwagi: Należy rozważyć aktualizację Netty & Wiosenna wersja przykładu, aby działała.
Opcja 2 (Tylko blogu):
Znalazłem blogu opisującego proces. http://www.hypersocket.com/content/?p=12
Oba dowiązania są martwe –
Look w projekcie Cruzeira które przynosi Netty.io Spring Framework wdrożenie podzbiór Servlet API https://github.com/fabiofalci/cruzeira
Właściwie ze sprężyny 5 można skonfigurować aplikację Spring 5 Webflux zamiast, wygląda solidnej alternatywy biernej . Poniższe linie (Config.start()
) uruchamiają mały serwer HTTP równolegle z głównym wykonaniem z kontekstem Spring.
@Configuration
public class Config extends DelegatingWebFluxConfiguration{
@Bean
String test(){
return "Hello WOrLd";
}
@Bean
AdminController controller(){
return new AdminController();
}
public static void start() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
HttpHandler handler = WebHttpHandlerBuilder.applicationContext(applicationContext).build();
ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(handler);
HttpServer.create("0.0.0.0", 8082).newHandler(adapter).subscribe();
}
}
kod kontrolera:
@RestController
public class AdminController {
@Autowired
String text;
@GetMapping(path = "/commands")
Mono<String> commands(){
return Mono.just(text);
}
}
build.gradle
compile 'org.springframework:spring-context:5.0.2.RELEASE'
compile 'org.springframework:spring-web:5.0.2.RELEASE'
compile 'org.springframework:spring-webflux:5.0.2.RELEASE'
compile 'io.projectreactor.ipc:reactor-netty:0.7.2.RELEASE'
PS: w tym przykładzie używa tylko Spring bez Spring Boot, który jest równie dobry jak wbudowany serwer WWW, ale powinieneś rozważyć użycie Spring Boot do stworzenia pełnowartościowego mikroserwisu.
- 1. Spring reaktor i netty vs tomcat http
- 2. Spring MVC, REST i HATEOAS
- 3. Integracja VaVin i Spring MVC
- 4. Spring MVC vs ASP.NET (MVC?)
- 5. ASP.NET MVC vs Spring MVC
- 6. Klasy abstrakcyjne i Spring MVC @ ModelAttribute/@ RequestParam
- 7. Spring MVC: strony błędów i główne informacje
- 8. GWT i Spring MVC, czy warto?
- 9. Sterowanie spring-mvc i obsługa wyjątków
- 10. Rozmieszczanie projektu Spring MVC
- 11. Spring MVC background process
- 12. Spring 3 Zasoby MVC i tag <mvc: resources />
- 13. Spring intercap mvc addObject
- 14. Spring MVC controller versioning
- 15. AngularJS ze Spring-mvc
- 16. Spring Boot 1.4.1 i Cassandra 3.x
- 17. Spring Tomcat i zasoby statyczne i mvc: zasoby
- 18. Autowire MongoRepository in Spring MVC
- 19. @Nazwa adnotacyjna w Spring MVC
- 20. Spring MVC test z MockMvc
- 21. Spring formularz mvc: wybierz tag
- 22. Spring MVC @RequestMapping nie działa
- 23. Servlet Raw vs. Spring MVC
- 24. Backbone.js + Spring MVC. Zapisz model
- 25. Twitter Bootstrap ze Spring MVC
- 26. Spring MVC configure url-pattern
- 27. Różnice między Akka HTTP i Netty
- 28. Integracja Apache Shiro i Netty ExecutionHandler/OrderedMemoryAwareThreadPoolExecutor
- 29. Różne wersje Netty i ich cele
- 30. Szukam OSGi ze Spring (specjalnie Spring MVC) tutorial
Lepsze pytanie nie jak, ale czy ma sens? Zobacz http://stackoverflow.com/questions/18374277/combine-netty-and-spring-mvc – Maksym