2011-11-24 7 views
7

W moim projekcie GWT działającym w glassfishv3, wszystko działa poprawnie, ale kiedy zmieniam moje wzorce adresów URL serwletu z web.xml na @WebServlet adnotacje wewnątrz klas serwletów, GWT rpc cand znajduję serwlet!@WebServlet adnotacja i GWT RPC

Zauważ, że inne zwykłe serwlety pracują z tą adnotacją (WebServlet) i tylko GWT RPC nie działa.

Jaki jest tego powód?

Rgds

+0

Należy pamiętać, że inne zwykłe serwlety działają poprawnie z tą adnotacją i tylko GWT RPC ma problem – Nav

+0

Czy kiedykolwiek otrzymałeś odpowiedź na ten temat? – icfantv

Odpowiedz

6

Czy ustawić numer wersji web-app w web.xml do poprawnej wersji serwletów, ponieważ ta funkcja jest dostępna tylko od 3,0:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     version="3.0"> 
+0

Tak, to jest wersja 3, a inne servlety pracują z tym typem mapowania (@WebServlet), ale GWT remoteServiceServlet nie działa – Nav

4

Ok, ja wreszcie ten działa, ale z pewnymi zastrzeżeniami. Udało mi się uruchomić go w Tomcat w ramach Intellij oraz jako wdrożony WAR do kontenera Tomcat 7.

Nie mogłem uruchomić go w trybie deweloperskim bez użycia -noserwera. Wierzę, że dzieje się tak dlatego, że wbudowany serwer Jetty nie jest zgodny z JSR315, ale nie ma na to dowodów, ponieważ nie próbowałem ustalić, która wersja pomostu znajduje się w słoiku gwt-dev.

Sztuką jest, że musisz w pełni zakwalifikować ścieżkę w WebServlet. Jeśli więc twój interfejs usługi zdalnej ma względną ścieżkę "paska", a nazwa twojego modułu (zmień nazwę na to w pliku gwt.xml) to "foo" to ścieżka, którą musisz ustawić ścieżką "/ foo/bar" w WebServlet i to będzie działać.

+0

Wiem, że to jest stare, ale tutaj jest błąd bezpośrednio związany z uzyskiwaniem adnotacji serwletu 3.0 do pracy z wbudowanym mackem serwer; https://code.google.com/p/google-web-toolkit/issues/detail?id=8472 – Jonathan