2010-11-26 2 views
0

J'ai interface de service Web commun sur chaque point de terminaison des applications (serveur et client). Comment puis-je créer un port côté client sans me connecter au serveur pour "le même" wsdl?Comment créer dynamique proxy de service avec JAX-WS

Je recherche quelque chose que présente cette pseudo-code:

MagicProxyFactory proxy = MagicProxyFactory.newInstance(MyServiceInterface.class); 

/* then bind service address like that 
((BindingProvider)proxy).getRequestContext() 
.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http address"); 
*/ 

MyServiceInterface port = (MyServiceInterface) proxy.getPort(); 

Répondre

0

En utilisant Metro? Tu ne peux pas. Vous avez besoin du fichier WSDL pour créer le proxy. Combinez le fichier WSDL avec votre client (de préférence) ou utilisez une URL à partir de laquelle le fichier WSDL peut être téléchargé lors de la création du proxy.

2

étapes comprennent:

  1. Créer l'instance Service en utilisant la méthode Service.create pour lequel vous devez savoir l'emplacement wsdl, le nom du service et l'URL de l'espace de nom du service.
    par exemple.

    URL wsdlLocation = nouvelle URL ("http://example.org/my.wsdl"); QName serviceName = nouveau QName ("http://example.org/sample", "MyService"); Service s = Service.create (wsdlLocation, serviceName);

  2. Obtenir le proxy de service (port de service pour la connexion) en utilisant la méthode Service.getPort(). Pour cela, vous devez connaître le nom de classe d'implémentation de noeud final.
    par exemple. MyService port = s.getPort(MyService.class);

Vous pouvez maintenant appeler des méthodes via un proxy.

Questions connexes