Question

Je développe des services Web Java (JAX-WS) pour insérer des données dans la base de données mysql et les récupérer. Ce service Web a deux méthodes: fetchFromDB et insertIntoDB. Les services semblent fonctionner correctement lorsque je les teste à l'aide de l'EDI Netbeans.

Address: /CalculatorWSService
WSDL:    /CalculatorWSService?wsdl

mais lorsque j'essaie d'y accéder à l'aide de l'objet xmlHttpRequest d'AJAX, en fournissant l'URL http: // localhost: 8080 / CalculatorApp / CalculatorWSService . Il n'est pas capable d'y accéder. J'ai développé des services Web C # et il a été si facile d'y accéder avec une URL, mais les services Web Java ne semblent pas suivre cela.

Ma question est

Quelle URL utiliser pour accéder aux opérations de service Web dans AJAX? (Dois-je utiliser '? Wsdl' dans l'URL? Existe-t-il une bibliothèque ajax javascript pour accéder facilement aux services Web JAX-WS? Les services Web Apache Axis sont-ils un meilleur choix que JAX-WS? S'il vous plaît aidez-moi, merci, Jay

Était-ce utile?

La solution

J'avais le même problème que vous, je ne pouvais pas appeler un service Web Jax-ws à partir de Javascript, mais j'ai trouvé un moyen de le faire.

L'URL à utiliser peut être identique (EndPointAddress) " http: // localhost: 8080 / CalculatorApp / CalculatorWSService "

mais lorsque vous créez un objet XMLHttpRequest à partir de javascript, vous devez:

* Utilisez la méthode POST pour ouvrir l’URL, j’ai essayé avec GET mais cela n’a pas fonctionné pour moi.
* Définissez l'en-tête de demande SOAPAction sur celui de votre wsdl, même s'il est vide "
".
* Soyez très prudent avec le corps de la demande à envoyer, l'enveloppe de savon doit être correcte.

espérons que cela pourra vous aider!.

Au revoir.
Paul Manjarres.

Autres conseils

Du point de vue du client, je ne m'attendais pas à des différences significatives entre Axis et JAX-WS. Tout ce dont le client a besoin doit figurer dans le WSDL.

Une chose qui arrive parfois est que l'URL utilisée lors du développement d'un WebService fait référence à l'hôte et au port de développement (et peut-être même à ContextRoot). Une fois déployés sur un serveur particulier, ils peuvent être modifiés. Idéalement, un nouveau WSDL pourrait être créé avec le nouveau "binding". information.

Ma première étape serait de pointer un navigateur directement sur le service Web que vous souhaitez invoquer. Dans mes environnements, cela renvoie un message "Bonjour, il s’agit d’un service Web". genre de message. Si vous obtenez 401 erreurs non trouvées, vous devez simplement étudier exactement le déploiement du service Web. Un autre port ou une autre racine de contexte ont-ils été spécifiés?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top