Configurer l'URL du webservice pour le client à partir d'un fichier de propriétés avec Netbeans 7 et Axis2
Je suis nouveau au développement d'un webservice. Je suis à l'aide de Netbeans 7.0 avec Axis2 plugin et Tomcat 7.
J'ai créé un projet pour les composants serveur où j'ai de définir le web méthodes, et a ensuite créé un autre projet pour les composants du client. Le client a été créé dans Netbeans en sélectionnant Nouveau -> Service Client.
Lorsque vous sélectionnez Nouveau -> Service Client dans Netbeans, il vous invite à droite, puis pour une URL WSDL. Alors bien sûr, je lui ai donné l'URL du WSDL à partir de mon local d'installation de Tomcat. Mais que penser lorsque je distribue une réelle demande? Les utilisateurs ne vont pas pointer leurs clients à http://localhost:8080/axis2/services/?wsdl. Je veux dire, lors de l'exécution du client à partir de l'IDE, tout cela fonctionne bien, mais quand je distribue des ce (c'est un travail de gestion de la demande par le chemin où vous clock in /out à un ou plusieurs clients et les fiches de temps sont écrits dans une centrale DB), chaque client doit être en mesure de pointer le webservice URL de ce serveur de production, il est censé se connecter à.
J'aimerais stocker le webservice URL dans un fichier de propriétés, mais ne savez pas vraiment ce que tout faire par programmation au client de faire l'appel à l'URL qui est chargé à partir du fichier de propriétés.
Dans mon client dist dossier, si j'ouvre le BOCAL de netbeans créé avec WinZip, je vois un nom de fichier jax-ws-catalog.xml qui a l'URL (qui est pointée sur localhost). Je suppose que c'est là que l'URL utilisée au moment de l'exécution.
Quelle est donc la bonne façon d'aller à ce sujet? J'ai cherché partout, mais les choses que j'ai trouvé en cherchant sur google, les recherches tendent à montrer webservice appels dans une manière complètement différente que le code généré automatiquement que Netbeans met ensemble, et j'aimerais avoir quelques info comment Netbeans crée un service client de sorte que je n'en finissent pas de faire des changements juste pour avoir l'IDE de les écraser.
Merci! Désolé pour la longue explication.
-Jim
OriginalL'auteur Jim | 2012-03-06
Vous devez vous connecter pour publier un commentaire.
Ce qui a été répondu avant:
Comment changer webservice url de point de terminaison?
NetBeans utilise plaine JAX-WS pour générer du code client, donc la réponse ci-dessus devrait fonctionner pour vous. Vous avez juste besoin d'ajouter un peu de code pour obtenir l'URL du point de terminaison à partir d'un fichier de propriétés.
Désolé mon commentaire avons été coupés. Ainsi, une simple testConnection méthode ressemble à ceci sur le côté client... private static String testConnection() { simplylaborclient.SimplyLaborServer service = new simplylaborclient.SimplyLaborServer(); simplylaborclient.SimplyLaborServerPortType port = service.getSimplyLaborServerHttpSoap12Endpoint(); port de retour.testConnection(); }
Et cela fonctionne très bien lors de l'exécution avec mon serveur local. J'ai donc créer un BindingProvider et définissez égal à mon port d'objet, puis faire quelque chose comme ceci avec enpointUrl chargé à partir d'un fichier de propriétés? - bp.getRequestContext().mettre(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); puis-je exécuter bp.testConnection() par exemple?
Dieu qu'il suce que vous n'obtenez pas de réponse très bien avec commentaires; pas de sauts de ligne, donc je ne peux pas montrer un exemple de code, sans répondre à ma propre question. Je suppose que je devrais avez modifié ma question d'origine au lieu d'utiliser les commentaires. Désolé les gars je suis nouveau à cela.
C'est OK, je suis nouveau à cela aussi. C'est en fait ma première réponse. Votre 3ème commentaire est correct, vous avez besoin pour lancer votre "port" de l'objet à BindingProvider à l'aide de: BindingProvider bp = (BindingProvider)port;, puis modifier l'URL à l'aide de bp.getRequestContext().mettre(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); et de remplacer "endpointURL" avec la Chaîne que vous avez chargé à partir de votre fichier de propriétés.
OriginalL'auteur shott85
J'ai en fait compris cela d'une manière différente, et c'est probablement spécifique à la manière de Netbeans fait les choses. La réponse Shott85 condition est bonne aussi, mais je pense que c'est plus spécifique à la manière de Netbeans' auto-génère du code.
Donc, j'ai un projet où toutes les méthodes web résident nommé SimplyLaborServer, et un projet qui a le webservice client nommé SimplyLaborClient.
Dans Netbeans, en vertu de la SimplyLaborClient projet dans la "a Généré Sources (jax-ws)" nœud, ils ont un SimplyLaborServer.java fichier qui a une classe qui s'étend de Service. Il a une URL privée qui est codé en dur sur mon serveur local de l'URL de la façon suivante...
Et dans le constructeur par défaut, il utilise cette URL. Mais il fournit également un constructeur comme suit où je peux indiquer l'URL...
Donc, quand j'ai un auto-généré méthode qui ressemble à ça dans mon client...
Je peux charger une des Propriétés de l'objet qui a l'URL du point de terminaison et de changer la ligne pour quelque chose comme ci-dessous, où les accessoires est une des Propriétés de l'objet qui a endpointUrl défini avec la bonne URL.
Mon seul souci est que ces méthodes sont de nature auto-généré lorsque vous faites glisser et déposez-les de la "Web service de références" nœud. Je ne veux pas l'être remplacé si je fais des modifications supplémentaires côté serveur.
Donc, je suis toujours ouvert aux commentaires si c'est la bonne chose à faire ici ou pas.
Grâce
"Lorsque vous sélectionnez Nouveau -> Service Client dans Netbeans, il vous invite à droite, puis pour une URL WSDL. Alors bien sûr, je lui ai donné l'URL du WSDL à partir de mon local d'installation de Tomcat." -> Si vous voulez que votre client généré pour pointer vers la bonne URL, ensuite URL correcte lors de la génération du client; l'URL doit être accessible lors de la génération du client. - Avec cela dit, je suis d'accord avec @JFTxJ: utiliser une autre mise en œuvre de la couche de classe/de l'instanciation de l'objet client.
OriginalL'auteur Jim
Vous utilisez locales (
http://localhost:8080/axis2/services
) WSDL pour juste créer les classes utilisées par le service web.Après vos développements terminée, vous pouvez héberger votre application de service web n'importe où dans le web ou dans le réseau local.
Après avoir terminé les développements de web service, vous pouvez localement déployer et utiliser le service pour créer les clients des classes requises. Lorsque vous créer le client vous suffit de créer un objet d'URL et de passer l'URL de votre service web (hébergé une) comme ci-dessous.
Netbeans IDE permettra de créer un grand nombre de classes lorsque vous avez créé le client de service web automatiquement.
Dans l'exemple ci-dessus le code ServiceClass est le service web principal de la classe, que vous créez d'abord en utilisant l'URL locale. Le nom et les paramètres du constructeur seront varient en tant que votre service web, mais vous devez passer l'URL du service web (nouvellement accueilli URL) comme une chaîne de caractères.
Ensuite avec la classe de service, vous pouvez créer un port d'objet et d'accéder à toutes les méthodes web dont vous avez besoin.
OriginalL'auteur Supun