web-dev-qa-db-fra.com

Comment trouver l'URL de mon service Web?

Je sais que cette question peut sembler stupide, mais je ne trouve aucune information à ce sujet .J'ai un service Web Java (généré à l'aide de NetBeans) et à l'intérieur de la classe de service Web, j'aimerais connaître l'URL à l'adresse Par exemple, si je déploie le service Web sur mon serveur glassFish local, il est disponible à l'adresse "http: // localhost: 8080/MyService /", où "MyService" est le nom de mon service. La raison pour laquelle j'ai besoin de connaître cette URL est que mon service Web génère des fichiers que je dois rendre disponibles sur cette URL. Par exemple, l'appel de service Web renvoie l'URL "http: // localhost: 8080/MyService/report.html" J'ai trouvé des liens concernant "WebServiceContext" mais je ne parviens pas à obtenir l'adresse URL à laquelle mon site Web a été ajouté. le service est en cours d'exécution. 

Édité

Pour clarifier: À l'intérieur de la classe MyWebService.Java, je souhaite connaître l'URL à laquelle mon service Web a été déployé (dans ce cas, mon service Web s'exécute à l'adresse "http: // localhost: 8080/MyService /", mais une fois déployé sur un serveur de production, cette URL changera)

12
Johnny

Si vous demandez comment trouver le nom d'hôte (par exemple, "localhost" ou "www.example.com") écouté par votre conteneur de servlets, vous avez quelques options:

  • Ajouter un point de configuration défini au moment du déploiement (fichier de configuration, propriété système, par exemple)
  • Vérifiez si votre conteneur de servlets expose une configuration d '"hôte virtuel" via JMX ou lisez ses fichiers de configuration (par exemple, hôtes Tomcat ).
  • Recherchez l'adresse IP du serveur et effectuez une recherche DNS pour obtenir son nom d'hôte configuré.
  • Inspecter l'en-tête 'Host' de la requête HttpServletRequest entrante

    String hostname = request.getRequestHeader("Host");

4
Uriah Carpenter

Plus facile à mon avis, par exemple:

@GET
public URI redirectSendMail(@Context UriInfo ui) {
  return ui.getBaseUri();
}

Si nous voulons renvoyer une chaîne au client, en indiquant le chemin exact de certaines ressources, nous pourrions vouloir quelque chose comme ceci.

@GET
public String getResourcePath(@Context UriInfo ui) {
  return ui.getAbsolutePath();
}
8
Rozgeboy

Si tout va bien, je peux vous aider. Je viens tout juste de commencer à travailler avec des services Web (Jersey REST) ​​et j’ai constaté que l’URL de votre terminal est: '
où XXX = le modèle d'URL dans le mappage de servlet dans votre fichier web.xml (par exemple, fichier ci-dessous)

<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>   

et YYY est le chemin défini par le paramètre @Path () de votre service Web. Dans le cas de cet exemple, il s’agirait ainsi: 

'http: // localhost: 8080/MyService/rest/myPathDefinition' 

Une autre chose à noter est que vous pouvez en fait changer la racine de contexte Web dans Eclipse, bien que le nom de votre projet Java soit défini par défaut. S'il vous plaît laissez-moi savoir si vous avez besoin de plus amples précisions ou si cela n'a pas aidé/quelqu'un peut développer sur elle.

2
Mike

Ajoutez la propriété ci-dessous dans votre classe de services Web.

@Resource    
private WebServiceContext wsCtxt;

Maintenant, l'extrait de code ci-dessous vous donnera les valeurs que vous recherchez:

    MessageContext msgCtxt = wsCtxt.getMessageContext();
    HttpServletRequest request =
        (HttpServletRequest)msgCtxt.get(MessageContext.SERVLET_REQUEST);

    String hostName = request .getServerName();
    int port = request .getServerPort();

pour vérifier d'où le service Web a été appelé, utilisez le code ci-dessous.

    String clientIP = request .getRemoteAddr();

Les importations connexes sont ci-dessous:

import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;

import weblogic.jws.Context;

import weblogic.wsee.jws.JwsContext;
1
Deepak Sharma

Vous pouvez le trouver sur votre fichier wsdl en tant que:

donc: http: // localhost: 8080/TestSOAPWebservice/services/TestClassImpl? wsdl serait l'URL de votre fichier WSDL.

0
Shaikh Aziz