2010-01-21 14 views
1

J'ai un service web fonctionnant sur tomcat (et fonctionnant). Je voudrais extraire l'URL du point de terminaison dans un fichier en dehors de la guerre, afin qu'il puisse être modifié sans avoir à redéployer la guerre. Je cours localement avec Tomcat 6 standalone sur Windows XP. Ma pensée était de l'avoir dans le Contexte, soit comme un paramètre de contexte, soit comme une variable d'Environnement.Tomcat ne reconnaît pas le contexte dans le service Web

Je n'étais pas sûr de ce qui était le mieux, et comme je ne peux pas reconnaître le contexte, je n'ai aucune idée de ce qui fonctionnera. Donc, ma première question, laquelle des entrées ci-dessous dois-je utiliser (le cas échéant)?

<Context path="/myapp" docBase="myapp"> 

<Environment name="webserviceURI" type="java.lang.String" override="true" value="endpointURLredacted"/> 

<context-parameter> 
<name>uri</name> 
<value>endpointURLredacted</value> 
</context-parameter> 

</Context> 

En supposant que la ligne de l'environnement est correcte, mon code pour récupérer est:

InitialContext ic = new InitialContext(); 
endpoint = (String)ic.lookup("webserviceURI"); 

Cependant ....

J'ai essayé d'ajouter ceci dans un fichier context.xml au META Dossier -INF, et j'avais l'impression que lorsque je déploie la guerre, pour citer une réponse d'une autre question ici, "Lorsque vous déployez la guerre, le fragment de contexte (META-INF/context.xml) est copié en/Catalina/répertoire [hôte]. " Eh bien, ça n'arrive pas. Je ne veux pas vraiment le faire de cette façon, car je veux que le contexte soit complètement séparé de la guerre, mais c'était un test pour voir si je pouvais aller aussi loin. Échouer.

J'ai donc essayé d'ajouter manuellement le contexte xml (renommé myapp.xml) à ce dossier (j'ai dû le créer en premier), mais je ne pense toujours pas que le fichier soit lu.

Lorsque j'exécute l'application, j'obtiens une erreur du type "javax.naming.NameNotFoundException: Name webserviceURI n'est pas lié dans ce contexte".

J'ai essayé imprimer l'environnement du contexte initial:

Context:  {java.naming.factory.initial=org.apache.naming.java.javaURLContextFactory,java.naming.factory.url.pkgs=org.apache.naming} 

Je ne pense pas que le fichier de contexte est aratio, peu importe où je l'ai mis.

Ce n'est pas une servlet (ce qui devrait peut-être l'être?) Si cela est important.

Répondre

2

J'ai supprimé l'attribut docBase du contexte, utilisé la balise Environment et récupéré la valeur en utilisant java: comp/env/webserviceURI, et voila! Succès.

Peut-être que cela aidera quelqu'un d'autre!