Existe-t-il une variable d’environnement Spring intégrée pour la racine de contexte Web?

J’utilise les services Web Spring pour exposer un service en tant que service Web. Dans mon fichier XML de configuration de spring, j’ai un bean qui est une instance de DefaultWsdl11Definition. L’une des propriétés à définir est locationUri . Cela doit être un Uri pleinement qualifié, mais je ne veux pas avoir à changer cette valeur lorsque l’application est promue de dev à uat et à la production. Spring connaît la racine de contexte de l’application Web. Y a-t-il une variable que je peux spécifier dans mon fichier de configuration pour y accéder?

Quelque chose comme:

          

Avec Spring 3.0, vous devriez pouvoir accéder au contexte de servlet via le bean servletContext dans le contexte d’application Web:

  

Si vous utilisez pré-Spring-EL (avant la version 3.0), vous devriez pouvoir le faire.

      

et dans votre haricot myWebservices

  

MODIFIER:

Je ne pense pas que l’obtention du nom du serveur et du port à partir du ServletContext, car, en fonction de la configuration, le conteneur Web peut ne pas connaître le nom d’hôte (un serveur HTTP peut se trouver devant le conteneur Web, par exemple, tomcat peut se trouver derrière un site Web Apache. serveur ou en fonction de la configuration Websphere).

Toutefois, les éléments suivants peuvent faire partie d’une solution permettant d’obtenir le nom d’hôte. Avec Spring 3.0, vous pouvez effectuer les opérations suivantes:

   

J’ai eu un problème similaire que vous avez décrit, j’utilise des fichiers de propriétés pour le faire

  • ws_dev.properties
  • ws_prod.properties

J’ai configuré mon fichier de propriétés comme ceci. La propriété de déploiement est l’argument java vm comme

 -Ddeployment=dev  

Peut-être en retard, mais un autre peut aussi avoir besoin d’une solution:

Définir la propriété dans le servlet:

web.xml

  spring-ws org.springframework.ws.transport.http.MessageDispatcherServlet  contextConfigLocation classpath:/spring-ws-context.xml   transformWsdlLocations true   

La déclaration du haricot dans spring-ws-context.xml:

      

Vous pouvez append une interface ApplicationContextAware à votre bean, le convertir en WebApplicationContext, puis obtenir ServletContext. Voir aussi la classe org.springframework.web.context.ContextLoader