2009-12-16 5 views
2

Je dois créer deux applications de service Web à déployer sur différents serveurs (WebSphere 6.1). L'un d'entre eux est "lié" à un autre en appelant ses services, de sorte que la première application de service Web doit être consciente de l'URL du second point de terminaison.Accès aux paramètres d'environnement dans web.xml à partir de l'application de service Web

Ces applications fonctionnent dans différents environnements: Dev, Test et Production. J'ai décidé de stocker cette URL en tant que paramètre environnemental dans le fichier web.xml de la première application afin d'avoir une certaine flexibilité pour passer d'une étape de développement à une autre, de sorte que l'URL du point de terminaison puisse être définie.

Dans web.xml de ma première application que je décrire le paramètre environnemental comme:


<env-entry> 
<description>Second WS</description> 
<env-entry-name>SECOND_SVC_URL</env-entry-name> 
<env-entry-type>java.lang.String</env-entry-type> 
<env-entry-value>http//domain/url</env-entry-value> 
</env-entry> 

Dans le code Java j'ai:


Context initialContext = new InitialContext(); 
Context context = (Context)initialContext.lookup("java:comp/env"); 
Object o = context.lookup(“SECOND_SVC_URL”); 
… 

J'ai eu l'exception sur la deuxième ligne ce code:


javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:653) 
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:257) 
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:294) 
at javax.naming.InitialContext.lookup(InitialContext.java:361)… 

S'il vous plaît, toute aide serait vraiment appréciée.

Merci.

Répondre

0

J'ai trouvé la raison de mon problème, je n'ai pas eu le temps de répondre à ma propre question. C'était idiot de ma part de tester mon code à partir de la méthode main() dans l'une des classes d'application. Certainement, vous devriez avoir votre application Web (dans mon cas, l'application de service Web) déployée et démarrée en premier, puis essayer d'obtenir les variables d'environnement à partir du contexte de l'application. Tout fonctionne maintenant.

Questions connexes