Aplikacja RESTful na Google App Engine Java?

83

Chciałbym stworzyć aplikację RESTful w Google App Engine. Chciałbym świadczyć usługi XML i JSON. Krótko eksperymentowałem z Restlet, Resteasy i Jersey. Nie odniosłem większego sukcesu z żadnym z nich, poza kilkoma prostymi przykładami w Restlet.

Czy mógłbyś podzielić się swoimi doświadczeniami z tworzenia aplikacji internetowej Restful w Google App Engine przy użyciu języka Java lub przedstawić wgląd w wyżej wymienione zestawy narzędzi w GAE?

Dzięki!

Edycja (2009-07-25):

Na razie zdecydowałem się na Restlet. Jak dotąd wydaje się działać bez zarzutu. Opublikuj wszelkie inne spostrzeżenia / opinie, które możesz mieć. Jakie problemy napotkałeś? Czy z powodzeniem używałeś Jersey / Restlet / Resteasy na GAE / J? Jeśli tak, to chcielibyśmy o tym usłyszeć!

JP Richardson
źródło
Technicalrex.com/2014/08/11/ ... i javacodegeeks.com/2012/05/ ... to najlepsze informacje o integracji Jersey GAE.
Md. Sajedul Karim,
To kwestia wyboru frameworka, do którego jesteśmy przyzwyczajeni w naszym rozwoju, używałem Spring MVC z obiektami, jak również Hibernate, a także działa bezbłędnie na Google App Engine.
Ankur Jain
@AnkurJain tak, wiele zmian w ciągu 7 lat.
JP Richardson

Odpowiedzi:

45

Z przyjemnością informuję, że Restlet M3 działa NIEPRAWIDŁOWO na AppEngine 1.2.2. Postępowałem zgodnie z samouczkami „Pierwsze kroki” i „Pierwsze zasoby”, które znalazłem http://restlet.com/technical-resources/restlet-framework/guide .

Wydaje mi się więc, że Restlet jest odpowiedzią na Twoje aplikacje GAE / J Restful.

JP Richardson
źródło
4
Powyższy link jest teraz uszkodzony. Odpowiedni link GAE do Restlet 2.2 to restlet.org/learn/guide/2.2/editions/gae
George Hawkins
6

Zamierzam również rozpocząć odkrywanie tego, ale jeszcze nie zacząłem. Znalazłem ten framework, który mówi, że powinien działać, ale jak powiedziałem, jeszcze go nie wypróbowałem.

http://wiki.restlet.org/docs_1.2/13-restlet/275-restlet/252-restlet.html

Jeśli sprawisz, że zadziała lub uda Ci się uruchomić jedną z powyższych sugestii, zaktualizuj wszystkich, ponieważ jestem pewien, że jest to zainteresowanie.

broschb
źródło
1
Jestem prawie pewien, że Restlet zadziała. Jest po prostu trochę bardziej nieprzyjemny w użyciu niż inne. Szczególnie podobają mi się adnotacje, które wprowadza Jersey. Planuję użyć Restlet w ciągu najbliższych kilku tygodni. Na pewno opublikuję aktualizację.
JP Richardson
Spędziłem też weekend, bawiąc się tym, a Restlet działa świetnie na GAE. Udało mi się coś złożyć na podstawie przykładu podanego w witrynie Restlet pod adresem URL, który zostawiłem wcześniej, który jest teraz niedostępny. Ale ustawienie wszystkiego było trywialne.
broschb
Napisałem mały post na swoim blogu, aby odpowiedzieć na inne pytanie dotyczące stackoverflow. Przedstawia bardzo prosty przykład ponownego uruchomienia GAE. broschb.blogspot.com/2009/08/…
broschb
1
Restlet ma teraz implementację JAX-RS. Zaczęli także dystrybuować kompilacje specjalnie do użytku w AppEngine. Będziesz chciał użyć najnowszego kamienia milowego 2,0 (obecnie 2,0 m4). Właśnie skonfigurowałem to jako dowód koncepcji nowej aplikacji, która jest obecnie tworzona. Nie polecałbym używania własnego API Restlet, ponieważ jest radykalnie ogólne, nadmiernie abstrakcyjne i po prostu ogólnie mylące. restlet.org/downloads/2.0/restlet-gae-2.0m4.zip
Mark Renouf
3

Ponieważ te odważne starsze rozwiązania zostały połączone razem, Google najwyraźniej dostarczył wtyczkę Eclipse do stworzenia projektu początkowego, który tworzy aplikację App Engine, pakiet APK na Androida i aplikację internetową, wszystkie rozmawiają ze sobą przez interfejs zdefiniowany przez jeden zestaw deklaracji obiektów z adnotacjami.

Sam jeszcze tego nie próbowałem, ale spójrz przed wypróbowaniem któregokolwiek z bardziej heterogenicznych przykładów opisanych we wcześniejszych wiadomościach powyżej:

https://developers.google.com/eclipse/docs/appengine_connected_android

Ten film Google jest również dość pouczający:

http://www.youtube.com/watch?v=NU_wNR_UUn4

Carl
źródło
2

Co jest warte, było sporo dyskusji na temat list użytkowników Jersey, dotyczących tego, jak sprawić, by Jersey działał w GAE. Jest to trochę żmudna praca z powodu ograniczeń GAE (brak klas z białych list - miejmy nadzieję, że z czasem zostanie rozwiązana), ale najwyraźniej można ją zmusić do pracy. Więc chociaż nie jest to banalnie łatwe, może to być najlepszy wybór; zwł. ponieważ wiele napotykanych problemów jest takich samych dla wszystkich frameworków (narzuconych przez GAE).

StaxMan
źródło
Chciałbym cię zapytać, czy masz jakieś rozwiązanie mojego pytania tutaj stackoverflow.com/questions/32699420/ ... dziękuję
Marco Dinatsoli
2

Cóż, gorąco radzę przyjrzeć się ramom zabaw

Obejrzyj wideo na stronie głównej

Posiada moduł gae

Ze Sieny jako ORM obsłużyć gae datastore

Ze wszystkich frameworków Java, które widziałem do tej pory, wydaje mi się, że ma łatwiejszą krzywą uczenia się,

  • świetna dokumentacja ,

  • poradnik do opracowania kompletnego wniosku

  • bardzo aktywna i pomocna społeczność,

  • wolny jak w piwie, a także jak w mowie

  • wysoce skalowalny ze względu na bezstanowy projekt po wyjęciu z pudełka

  • odpoczynek przyjazny

  • wysoce konfigurowalny dzięki modułom i podejściu do wtyczek

co więcej, biorąc pod uwagę, że jest to kurs na studia, bardzo łatwo jest włamać się do kodu, poradziłbym sobie z kilkoma biletami i nowymi funkcjami bez żadnego doświadczenia z java, zaledwie kilka lat tworzyłem aplikacje internetowe z php

inne korzyści

  • jest naprawdę łatwy do uruchomienia, bez skomplikowanej konfiguracji, po prostu pobierz i rozpakuj plik i gotowe

  • świetne wrażenia programistyczne, po prostu napraw kod i naciśnij przycisk odświeżania, odtwarzaj zmiany autokompilacji w locie podczas pracy w trybie programistycznym

  • szybki i lekki

  • fullstack, nie musisz integrować uciążliwych frameworków, aby to działało

  • świetny raport o błędach, koniec z niekończącym się śledzeniem stosu błędów, po prostu pokazuje wiersz z błędem

  • nigdzie nie ma konfiguracji XML

  • świetne wsparcie dla tdd ze zintegrowanym testem selenu

Myślę, że główną zaletą narzędzia do nauki jest to, że można zajrzeć do kodu źródłowego bez poczucia zagubienia i wsparcia społeczności ... Dokumentacja jest bardzo przejrzysta i można się wiele nauczyć, po prostu patrząc na źródło kod...

opensas
źródło
Play wygląda bardzo efektownie. Jednak jego integracja z GAE nie wygląda tak, jakby była utrzymywana w głównym projekcie, a zatem pozostaje w tyle za cyklem wydawniczym GAE. Wydaje się, że jego wtyczka GWT pozostaje jeszcze bardziej w tyle. Niemniej jednak poprę za pokazanie mi tak fajnego projektu.
JP Richardson
moduł gae został opracowany i jest utrzymywany przez głównego programistę, moduł siena (zalecany orm dla gae, jpa ma wiele problemów) jest obsługiwany przez bardzo aktywnego członka społeczności, niestety moduł gwt nie zwraca tak dużej uwagi w czyn ...
otwiera się
Moduł gae wrócił na właściwe tory! inny programista zajął się tym, tutaj wsparcie fot gae 1.6 playframework.org/modules/gae-1.6.0/home
otwiera się
2

Niedawno stworzyłem szablon projektu z Jersey, Guice i AppEngine w GitHub. Został opracowany za pomocą SimpleDS, ale można go łatwo zmodyfikować, aby działał z Objectify / JDO. Projekt jest tutaj na żywo .

Powinien być dobrym punktem wyjścia do nowych projektów.

Nacho Coloma
źródło
1

Oto bardzo dobry tutorial Restlet / Android / GAE / Objectify z przykładem prostej aplikacji. Przepraszamy, jest w języku francuskim, ale możesz po prostu skopiować / wkleić kod lub skorzystać z Google Traduction.

Śledziłem to i miałem działający serwer Android / GAE komunikujący się ze sobą w ciągu 2 godzin. To dobra baza do uruchomienia lub przetestowania Restlet.

http://www.tutos-android.com/webservice-rest-android-appengine-restlet-objectify

Powodzenia

Tyvain
źródło
-1

Dwie najbardziej kłopotliwe akcje GAE REST API, które działają, czy to Java, czy .py, to grafika i sposób ukrywania prywatnych informacji. My little gae rest feed rozwidlił kolejny projekt. Jestem pewien, że Java odnosi sukces tam, gdzie Python utknął, ponieważ Java zajmuje i daje więcej sposobów (korzyści), a także dłuższy (wolniejszy) czas na odniesienie sukcesu (wada), podczas gdy projekty w Pythonie otwierają mniej możliwości odniesienia sukcesu (niekorzystne) i krótszy czas programowania ( korzystny szybki rozwój), aby odnieść sukces.

Niklas R.
źródło