2010-09-09 5 views
2

J'ai écrit un webservice java, je l'ai déployé sur mon tomcat et j'ai accédé au service WSDL via mon navigateur web, tout va bien. L'étape suivante consistait à générer une classe proxy qui peut être utilisée par le client pour communiquer avec le site Web. C'est ce que je faisais à côté:Classes proxy WebService

permet d'assumer mon wsdl est accessible via: http://localhost:8080/testSvc/testSvc?wsdl

Utilisation de l'outil wsimport, je produis le proxy en utilisant la commande suivante: $> wsimport http://localhost:8080/testSvc/testSvc?wsdl

Le problème est que localhost: 8080 est codé en dur dans les classes générées et si je déploie le service sur un port autre que 8080 alors le client ne peut pas l'atteindre car le client essayera toujours d'accéder au service sur le port 8080.

Y at-il de toute façon de développer des classes proxy n manière dont le numéro de port n'est pas codé en dur? Alors que nous pouvons déployer le service sur n'importe quel port?

J'ai essayé de mettre à jour ENDPOINT_ADDRESS_PROPERTY mais ce n'est pas utile car le code échoue au moment où il instancie une instance de la classe proxy. Il n'atteint jamais vraiment un point où je peux écraser ENDPOINT_ADDRESS qu'il est prêt à partir de la classe proxy.

Répondre

5

Une façon est d'utiliser le paramètre wsimport

-wsdllocation <location> 

et pointer vers votre nouveau WSDL.

Ou vous pouvez utiliser l'option

-catalog.

Pour modifier l'adresse utiliser dynamiquement du code comme:

service = new Service(); 
port = service.getxxxPort(); 

((BindingProvider) port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, newUrl); 
-1

Utilisez le -keepparameter pour conserver les fichiers sources générés par wsimport. À partir de là, vous pouvez modifier l'URL du noeud final dans le code source généré par wsimport comme vous le souhaitez.

+0

L'URL est codé en dur dans plusieurs clasess donc sa solution pas vraiment élégante ... – Julia

Questions connexes