Wpis z mikrobloga

Chciałem stworzyć minimalny RESTfulowy webservice w IntelliJ z użyciem TomEE.
Korzystam z https://www.jetbrains.com/help/idea/creating-and-running-your-first-restful-web-service.html

Pytania
1. Co jest potrzebne do uruchomienia takiego serwera z hello worldowym przykładem?
Wydawało mi się, że serwer aplikacji java ee + import liba który udostępni API JAX-RS w programie klienta (czyli jak rozumiem lib udostępnia adnotacje i będzie komunikować się z serwerem aplikacji).

Czyli zwykły projekt (Java SE) + dodanie konfiguracji uruchomieniowej z serwerem TomEE. Oraz zaimportowanie np.
https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api
lub RESTEasy JAX RS Implementation / Jersey Core Client

2. Czy jak chcę korzystać z Mavena to dodawanie projektu tak jak w linku (czyli Projekt JavaEE + wybranie libów) nie spowoduje, że ustawienia zależności wykona IDE zamiast Mavena? Potem jak dodam "Add Framework Support..." i dodam Mavena to mimo dołączonych libów trzeba ustawiać zależności w pom.xml?

3. Gdy używam konfiguracji uruchomieniowej z ustawionym serverem, to intellij wykonuje cele mavena (typu mvn clean mvn deploy)? Czy to zrobi się tylko wtedy gdy w oknie mvn odpalę cel, a przez Shift + F10 uruchomi się to co ma ustawione IDE a nie jest skonfigurowane w pom.xml?

4. Co z tego linku IntelliJ robi za mnie? Bo widzę utworzenie folderu web z WEB-INF, skonfigurowany artefakt.
Uczę się i nie chciałbym potem nie umieć skonfigurować tego samodzielnie (lub jak mi się IntelliJ Ultimate skończy :D )

#programowanie #naukaprogramowania #java
  • 8
@kebab-case: chcę użyć jax-rs, więc raczej serwer aplikacyjny.
Dodaję konfigurację uruchomieniową w IntelliJ i zbuduje mi artefakt (plik .war) i uruchomi na serwerze.
I wcześniej jeszcze do projektu muszę dodać zależność która da mi API z JAX-RS?
@kebab-case: samo odpalenie webservice chyba pójdzie okej (servlety już odpalałem), tylko nie wiem co jest potrzebne klasom bym mógł korzystać z np. adnotacji JAX-RS.
https://www.jetbrains.com/help/idea/creating-and-running-your-first-restful-web-service.html


@Lewo: to co jest w tym linku to jest wyklikanie aplikacji przez kreator intellij, w takiej sytuacji nie potrzebujesz do projektu dodawać żadnych libów.
Dużo lepiej jest jednak stworzyć sobie czysty projekt w mavenie z archetypu webapp i dodanie jedynie specyfikacji jaxrs ze scope provided, dopóki nie potrzebujesz żadnych specyficznych rzeczy dla jerseya, to nie dodawaj do niego zależności, dzięki temu aplikację uruchomisz na dowolnym serwerze ee. Możesz sobie kliknąć
@Eoghan: dzięki za odpowiedź.
Nie rozumiałem trochę jak mogę dodać specyfikację do projektu - dla mnie specyfikacja to było dokument w którym opisane są wymagane interfejsy i opis wymaganych zachowań, w pliku jar ewentualnie mogłyby być czyste interfejsy.
Przeczytałem
https://stackoverflow.com/questions/32106428/jaxrs-api-vs-jsr311-api-vs-javax-ws-rs-api-vs-jersey-core-vs-jaxrs-ri/32109009#32109009
i w jar-ach ze specyfikacją są określone 'kontrakty' (nie wiem co to - ale już nie wnikam - zdekompilowałem pliki class i w specyfikacji widziałem interfejsy i klasy final, a kontrakt
@Eoghan: a przez 'Add Framework Support' nie mam do wyboru JaxRS. Jest ewetnaulnie Webservices i RESTful Webservices (ale tutaj nie ma domyślnie biblioteki i trzeba chyba pobrać)
@Lewo: jak robisz przez kreator i javaee project, to przywiązujesz się do intellij, a jeśli zrobisz projekt mavena, to możesz to robić w dowolnym środowisku. Jaxrs to rest, więc musisz wybrać właśnie to restful webservices, choć i bez tego powinno działać. Włączenie tej opcji zmienia tyle, że jak wybierzesz New > ... to pojawi się tam może jakiś dodatkowy kreator do restowych kontrolerów i chyba będzie dodatkowa zakładka z listą metod