2010-04-13 7 views
10

J'ai un module GWT avec le X-GWT-Module-Base http://host:8080/foo/ et je voudrais appeler un service (GWT) qui se trouve au http://host:8080/bar/. La raison en est par exemple que je veux être en mesure de partager un service GWT entre deux différents projets clients GWT. Tout ce que j'ai pu faire jusqu'à présent, c'est que si le service est situé dans le contexte du module, c'est-à-dire http://host:8080/foo/bar fonctionne correctement, en utilisant @RemoteServiceRelativePath("bar") dans mon interface de service.Appel d'un service GWT dans un contexte différent de celui de la base du module GWT?

Il semble que le @RemoteServiceRelativePath permet seulement une valeur par rapport à l'URL de base du module ... donc est-il une autre façon d'accomplir ce que je suis en train d'accomplir?

Répondre

14

Nous avons fini de trouver la réponse moi-même right here:

le problème apparaît en raison de la RemoteServiceRelativePath que vous remarqué dit relativePath, une façon de résoudre ce problème est d'utiliser

((ServiceDefTarget)gwtService).setServiceEntryPoint("/some/absolute/path"); 

ou utiliser la puissance du chemin relatif (c'est comme ça que je le fais, parce que je suis paresseux)

@RemoteServiceRelativePath("../servX") 

qui, au lieu de/Modb/ou servX/MODA/servX deviendra/servX pas quel que soit le module appelle, il aussi vous aurez besoin de faire les changements appropriés dans web.xml afin que le

+0

Vous pouvez vous cocher comme réponse. +1 de moi. – mgiuca

+0

J'ajouterai simplement que 'gwtService' est le nom de l'objet de service async que vous avez récupéré depuis GWT.create, et vous devriez appeler setServiceEntryPoint juste après avoir appelé GWT.create. C'est une solution tellement frustrante ... cela rend la vie très difficile pour les projets clients (je préfère envelopper les détails de l'URL dans la bibliothèque). Tant pis. – mgiuca