p
u
b
l
i
c
i
t
é

FAQ Java EEConsultez toutes les FAQ

Nombre d'auteurs : 27, nombre de questions : 85, dernière mise à jour : 3 mai 2015  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.


SommaireConteneurs Web et Serveurs d'ApplicationTomcat (8)
précédent sommaire
 

Si on ajoute j2ee.jar dans le répertoire WEB-INF/lib d'une application sur Tomcat, il va y avoir un problème de compatibilité entre les Jar de Tomcat (servlet.jar) et celui de Java EE.

C'est pourquoi, il faut rajouter ce Jar dans le fichier lib du JDK utilisé par Tomcat et le retirer du dossier WEB-INF/lib.

Mis à jour le 22 décembre 2009 paquerette

Dans Tomcat, le moteur de rendu (Jasper) effectue le rendu de la page jusqu'à ce qu'il trouve une erreur. S'il trouve une erreur, il stoppe le rendu de la page et ajoute une erreur dans les fichiers de log. Il est donc tout à fait possible que votre page soit coupée au beau milieu.

Mis à jour le 22 décembre 2009 ceddup

Il faut que le jar du JDBC soit dans les lib de Tomcat
Puis il y a trois étapes :

dans le server.xml

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<Context path="/Le_Contexte" reloadable="true" debug="0"  
		docBase="Le_DocBase" workDir="Le_workDir"> 
	<Ressource name="jdbc/Le_Contexte" auth="Container" type="javax.sql.DataSource"/>  
	<ResourceParams name="jdbc/Le_Contexte"> 
		<parameter> 
			<name>user</name> 
			<value>Le_Login_SGBD</value> 
		</parameter>  
		<parameter> 
			<name>password</name> 
			<value>Le_Password_SGBD</value> 
		</parameter> 
		<parameter> 
			<name>driverClassName</name> 
			<value>Le_Driver_SGBD</value> 
		</parameter> 
		<parameter> 
			<name>url</name> 
			<value>L_URL_Connection</value> 
		</parameter> 
	</ResourceParams> 
</Context>
Puis dans le web.xml il faut déclarer la ressource après la section <servlet-mapping> :

Code xml : Sélectionner tout
1
2
3
4
5
6
<resource-ref>  
	<description>reference a la ressource BDD pour le pool</description> 
	<res-ref-name>jdbc/Le_Contexte</res-ref-name> 
	<res-type>javax.sql.DataSource</res-type> 
	<res-auth>Container</res-auth> 
</resource-ref>
Enfin dans la méthode init de la servlet, il faut recupèrer la source de données

Code java : Sélectionner tout
1
2
3
4
5
6
7
try {  
	Context initCtx = new InitialContext(); 
	Context envCtx = (Context) initCtx.lookup("java:comp/env");  
	ds = (DataSource) envCtx.lookup("jdbc/Le_Contexte");  
} catch (Exception e) {  
	//Gestion de l'erreur  
}
sachant que ds est une variable d'instance de type DataSource.
Quand on a besoin de l'accès a la base de données, on fait:

Code java : Sélectionner tout
Connection conn=ds.getConnection();
ne pas oublier de libérer avec un close après.
On peut aussi préciser dans le serveur xml, le nombre de connection que l'on veut dans le pool (nb max, nb min, nombre en attente)

Attention! Bien que cette FAQ mentionne cette possibilité, mettre la balise <context/> dans server.xml est fortement déconseillé depuis tomcat 5.0! Préférez l'utilisation d'un fichier context autonome.

Pour en savoir plus sur la gestion d'un pool de connexion sous Tomcat

Mis à jour le 16 février 2005 christopheJ

Voici un exemple des lignes à rajouter dans le fichier conf/server.xml :

Code xml : Sélectionner tout
1
2
3
4
5
6
<Context path="/webapp1" docBase="webapps/webapp1" crossContext="true" 
		debug="0" reloadable="true"> 
</Context> 
<Context path="/webapp2" docBase="webapps/webapp2" crossContext="true" 
		debug="0" reloadable="true"> 
</Context>
Ne pas oublir d'inclure dans le <Context> l'attribut :

Code java : Sélectionner tout
crossContext="true"
Ensuite au niveau de la servlet on accède à la seconde webapp de la manière suivante :

Code java : Sélectionner tout
1
2
ServletContext myContext = this.getServletContext(); 
ServletContext otherContext = myContext.getContext("/webapp1");
Depuis Tomcat 5.0, bien que ce soit toujours possible, il est déconseillé de mettre la balise <context> dans le fichier server.xml. Dans la mesure du possible, il est bien plus prudent de gérer des fichiers context autonome.

Mis à jour le 16 février 2005 draken

Dans le fichier web.xml du répertoire WEB-INF lors de la déclaration du servlet, rajouter la ligne:

Code xml : Sélectionner tout
<load-on-startup>1</load-on-startup>
Exemple:

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
<servlet> 
	<servlet-name>Controller</servlet-name> 
	<display-name>Controller</display-name> 
	<servlet-class>com.company.Controller</servlet-class> 
	<init-param> 
		<param-name>index</param-name> 
		<param-value>/index.jsp</param-value> 
	</init-param> 
	<load-on-startup>1</load-on-startup> 
</servlet>

Mis à jour le 16 février 2005 bahamouth

Ces messages sont composés de deux parties. Pour débugger il faut regarder la deuxieme partie qui commence après :

Code text : Sélectionner tout
root cause
Ou enore le message

Code text : Sélectionner tout
cause mere
L'erreur est alors indiquée sous la forme d'une exception.

Mis à jour le 16 mars 2005 christopheJ

Afin de pouvoir créer un compte pour pouvoir accèder à l'interface de gestion du conteneur Web (afin de pouvoir retirer les applications déployées par exemple), il vous suffit d'accèder directement à ./conf/tomcat-users.xml.

De base le fichier se présente ainsi :

Code xml : Sélectionner tout
1
2
3
<?xml version='1.0' encoding='utf-8'?> 
<tomcat-users> 
</tomcat-users>
Dès lors, il nous suffit de déclarer le rôle manager :

Code xml : Sélectionner tout
<role rolename="manager"/>
Enfin, nous pouvons ajouter un utilisateur :

Code xml : Sélectionner tout
<user username="adminTomcat" password="admin" roles="manager"/>
Au final, notre fichier ressemblera à ceci :

Code xml : Sélectionner tout
1
2
3
4
5
<?xml version='1.0' encoding='utf-8'?> 
<tomcat-users> 
	<role rolename="manager"/> 
	<user username="adminTomcat" password="admin" roles="manager"/> 
</tomcat-users>
Suite à ça, vous pourrez vous authentifier sous Tomcat afin de pouvoir gérer votre conteneur de servlets.

Mis à jour le 16 février 2005 X-plode

Il suffit tout simplement de rajouter l'option suivante :

Code : Sélectionner tout
-Djava.library.path=<chemin vers DLL>
dans la variable d'environnement TOMCAT_OPTS.

Mis à jour le 22 décembre 2009 v1nc3kr0

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2015 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique Java Web : Mickael Baron -