Bonjour à tous.
J'essaye de faire fonctionner une appli web qui cherche une ressource JNDI nommée java:comp/env/adminPassword . Ca marchait très bien sous Tomcat mais je voudrai utiliser Jetty.
J'utilise donc Jetty 6.1.14 de la manière suivante :
/opt/jetty-6.1.14$ java -jar start.jar etc/jetty-plus.xml etc/jetty.xml
Je ne souhaite pas etre obligé de configurer le JNDI dans mon war/WEB-INF/jetty-env.xml, mais au niveau du serveur. J'ai suivi http://docs.codehaus.org/display/JETTY/JNDI
Mon appli est donc configuré dans /opt/jetty-6.1.14/contexts/photos.xml dont voici le contenu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<!-- ==================================================================
Configure and deploy the test web application in $(jetty.home)/webapps/test
Note. If this file did not exist or used a context path other that /test
then the default configuration of jetty.xml would discover the test
webapplication with a WebAppDeployer. By specifying a context in this
directory, additional configuration may be specified and hot deployments
detected.
===================================================================== -->
<Configure id="photos.bouil.org" class="org.mortbay.jetty.webapp.WebAppContext">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Required minimal context configuration : -->
<!-- + contextPath -->
<!-- + war OR resourceBase -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="contextPath">/</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/photos.war</Set>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Optional context configuration -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="extractWAR">false</Set>
<Set name="copyWebDir">false</Set>
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
<!-- virtual hosts -->
<Set name="virtualHosts">
<Array type="String">
<Item>photos.localhost</Item>
</Array>
</Set>
<!-- disable cookies
<Get name="sessionHandler">
<Get name="sessionManager">
<Set name="usingCookies" type="boolean">false</Set>
</Get>
</Get>
-->
<Get name="securityHandler">
<Set name="userRealm">
<New class="org.mortbay.jetty.security.HashUserRealm">
<Set name="name">Test Realm</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<!-- To enable reload of realm when properties change, uncomment the following lines -->
<!-- changing refreshInterval (in seconds) as desired -->
<!--
<Set name="refreshInterval">5</Set>
<Call name="start"></Call>
-->
</New>
</Set>
<Set name="checkWelcomeFiles">true</Set>
</Get>
<!-- Non standard error page mapping -->
<!--
<Get name="errorHandler">
<Call name="addErrorPage">
<Arg type="int">500</Arg>
<Arg type="int">599</Arg>
<Arg type="String">/dump/errorCodeRangeMapping</Arg>
</Call>
</Get>
-->
<!-- Define an env entry with webapp scope for java:comp/env -->
<New id="adminPassword" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>adminPassword</Arg>
<Arg type="java.lang.String">password</Arg>
<Arg type="boolean">true</Arg>
</New>
</Configure> |
Et dans mon appli le web.xml contient :
1 2 3 4 5 6 7
|
...
<resource-env-ref>
<resource-env-ref-name>adminPassword</resource-env-ref-name>
<resource-env-ref-type>java.lang.String</resource-env-ref-type>
</resource-env-ref>
</web-app> |
Et bien sur, mon code ne marche pas, j'ai du oublier quelque chose....
1 2 3
|
Context env = (Context) new InitialContext().lookup("java:comp/env");
String value = (String) env.lookup("adminPassword"); |
Quelqu'un a surement déjà été confronté au problème !
Merci de votre aide.
Partager