# Java > Dveloppement Web en Java > Servlets/JSP >  Problme avec mon 1er projet JEE (Eclipse/Tomcat7)

## Gugelhupf

Bonsoir,

Ayant les connaissances de bases en Java (et ayant dj fait du PHP), j'ai voulu m'attaquer au JEE en installant Tomcat 7 et Eclipse Indigo (JEE).
Je souhaiterais appliquer le modle MVC avec le fichier web.xml, les servlets et pages JSP.


Donc je cre mon premier _Dynamic Web Project_, mais *je ne sais pas trop si je fais bien tout comme il faut* :



Je compile le programme (index.jsp) et j'ai ce *pop-up d'erreur* qui apparait :

J'ai lu qu'il fallait que j'augmente le ?timeout?, mais 45 secondes (par dfaut) n'est-ce pas suffisant, comment fais-t-on pour l'augmenter ?


La console m'affiche ceci :



> 18 dc. 2011 20:18:28 org.apache.catalina.core.AprLifecycleListener init
> INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Broadcom\Broadcom 802.11\Driver;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\Windows Live\Shared
> 18 dc. 2011 20:18:28 org.apache.tomcat.util.digester.SetPropertiesRule begin
> ATTENTION: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:GED' did not find a matching property.
> 18 dc. 2011 20:18:29 org.apache.coyote.AbstractProtocol init
> INFO: Initializing ProtocolHandler ["http-bio-8080"]
> 18 dc. 2011 20:18:29 org.apache.coyote.AbstractProtocol init
> INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
> 18 dc. 2011 20:18:29 org.apache.catalina.startup.Catalina load
> ...




Je vous remercie pour votre aide !  ::):

----------


## OButterlin

Tu devrais avoir un onglet "Servers" avec une ligne correspondant  Tomcat 7.
Si tu double-cliques sur cette ligne, tu accderas aux paramtres.
De mmoire, a se trouve sur la partie droite, en haut.

----------


## thierryler

Pour commencer, je te conseille d'essayer avec Java 6 et Tomcat 6. Je t'expliquerai plus tard pourquoi.

Ensuite, tu ne dois pas avoir de package par dfaut dans ton appli (cf. la classe Connexion)

Je t'invite  utiliser Maven pour crer un projet Web. Tu peux utiliser le generateur d'archetype pour avoir un projet vide. 



```

```

Prend l'archetype "maven-archetype-webapp" dans la liste propose. Sur ma version c'est le 157. En gnral c'est un chiffre proche de celui propos par dfaut.

Tu importe le projet dans Eclipse (cf. http://thierry-leriche-dessirier.dev...eclipse-5-min/) 

En gros faut taper 



```

```

Le wtpversion c'est parce que c'est un site web.

Donc tu envoie a dans Tomcat. Je te conseille de cocher le radio "Use tomcat installation"

Ci-joint un zip avec le rsultat de tout a.

Dans src/main/webapp, tu as :
* index.jsp qui est une page
* WEB-INF qui est le dossier o va la conf, avec en particulier web.xml

Les classes java vont dans src/main/java (non prsent dans le zip)

Sinon tu as aussi des archetypes plus intressants avec JSF2 par exemple. Je te laisse chercher dans la liste celui qui te convient le plus.

----------


## v.charlet

> Caused by: java.lang.IllegalArgumentException: <url-pattern> connexion.do invalide dans l'association de servlet (servlet mapping)


Vu l'erreur je me risque  dire que le problme semble tre du cot du fichier web.xml

----------


## Gugelhupf

Bonjour,

@OButterlin, j'ai pu trouver l'onglet et modifi le Timeout :



Mais mme ayant doubl le Timeout j'ai toujours le mme problme :





@thierryler, je prend note du fait qu'il est dconseill de crer une classe dans le package par dfaut.
Je vais d'abord essayer de faire avec ce que j'ai (car je suis dbutant), et je regarderais le projet Maven et JFS2 un peu plus tard.
_"je te conseille d'essayer avec Java 6 et Tomcat 6. Je t'expliquerai plus tard pourquoi."_, je n'ai pas compris. 



*EDIT :* v.charlet j'ai post mon message 1 minute aprs le tient.
Il se peut en effet que l'erreur vienne du fichier web.xml, voici son contenu tel que je l'ai appris sur un tutoriel :


```

```

D'o peut venir le problme ?



Merci  ::):

----------


## OButterlin

Ton url-pattern devrait tre "/connexion.do"

----------


## v.charlet

je profite de ce post pour vous informer d'une page sur justement comment crer son premier projet, parce que il y a un mois jtais dans ta situation !

http://roboky80.wordpress.com/mon-premier-projet/

j'espre suivre le rythme au fur et  mesure de mes progrs ...

Vincent

----------


## Gugelhupf

@OButterlin, c'tait bien cela, il manquait le slash !

Je sens que j'approche du but !... Enfin presque car j'ai une erreur 404 (_404 : page not found, la ressource demande n'existe pas sur le serveur_)

Je m'explique, je suis sur _index.jsp_ et  partir du *formulaire HTML* j'essaye de passer  _Fenetre2.jsp_, mais l'erreur survient :

Je pense qu'Eclipse/Tomcat *ne retrouve pas l'emplacement* de ma classe Index.java !

Contenu de mon fichier web.xml :


```

```

----------


## OButterlin

Peux-tu mettre le source des pages jsp ?

----------


## Gugelhupf

C'est un formulaire trs simple, qui ne ncessite que l'appuie d'un bouton Submit pour passer de la page actuelle (_index.jsp_)  une autre page (_Fenetre2.jsp_).

Voici l'index.jsp :


```

```



Voici le contenu de ma classe Index :


```

```



Voici Fenetre2.jsp :


```

```


Merci  ::):

----------


## thierryler

Tu peux juste essayer de mettre public tes doget dopost.

----------


## OButterlin

de mmoire, il faudrait rajouter le "/" devant l'action.
Pour tre sr, tu peux faire ceci


```
<form method="post" action="<%=request.getContextPath()%>/connexion.do">
```

----------


## thierryler

tu peux nous faire un zip de ton projet aussi

----------


## Gugelhupf

@thierryler, j'ai mis les mthodes doGet et doPost en *public* mais le problme persiste.



@OButterlin, j'ai bien mis ceci :


```
<form method="post" action="<%=request.getContextPath()%>/connexion.do">
```

Mais j'ai toujours le mme problme.




Voici une partie (la fin) du message de la Console :



> GRAVE: Exception lors de l'allocation pour la servlet indexConnexion
> java.lang.IllegalAccessException: Class org.apache.catalina.core.DefaultInstanceManager can not access a member of class com.servlet.control.Index with modifiers ""
> 	at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
> 	at java.lang.Class.newInstance0(Unknown Source)
> 	at java.lang.Class.newInstance(Unknown Source)
> 	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:125)
> 	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)
> 	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
> ...

----------


## thierryler

> java.lang.IllegalAccessException: Class org.apache.catalina.core.DefaultInstanceManager can not access a member of class com.servlet.control.Index with modifiers ""


Quand t'as a, c'est qu'il y a un truc pas catholique. Fais un zip. Dj la structure de ton projet me choque...

----------


## Gugelhupf

@thierryler, je n'avais pas vu ton message, voici un .zip de mon workspace Java (58 Ko).

PS: J'ai juste enlev le contenu de la classe Connexion  cause des identifiants prsents  l'intrieur.


Merci  ::):

----------


## thierryler

voici un zip avec un projet que j'ai fais en full Eclipse. J'ai essay de reprendre les mmes lments que toi.

----------


## thierryler

> voici un .zip de mon workspace Java (58 Ko)


C'est ce que je pensais (quand je parlais du package par dfaut). J'ai l'impression que tu ne cres pas tes classes au bon endroit. Elles devraient etre dans src. Regarde comment j'ai fais dans mon zip

----------


## thierryler

J'ai juste fais :

mapage.jsp


```

```

Ce qui va t'intresser, c'est la partie, donc sans le slash :


```

```

Dans mon web.xml, avec le slash :



```

```

Et ma classe IndexServlet est bien dans src, avec les mthode en protected comme toi :



```

```

----------


## Gugelhupf

J'ai tout repris du dbut pour tre sur mais toujours l'erreur 404 !  ::(: 
J'ai fais attention de dmarrer Eclipse en mode Administrateur (sous Windows).


Je compile _index.jsp_, et j'ai comme d'habitude une premire *erreur 500* fait son apparition :



Puis suivent les *erreur 404* 
GRAVE: Exception lors de l'allocation pour la servlet indexConnexion
java.lang.IllegalAccessException: Class org.apache.catalina.core.DefaultInstanceManager can not access a member of class com.servlet.control.Index with modifiers ""
_INFO: La servlet indexConnexion est actuellement indisponible_



Voici mon arborescence (GED) :



Voici l'arborescence du projet (testwabappindex):




Je vous remercie pour votre attention  ::aie::

----------


## thierryler

> J'ai fais attention de dmarrer Eclipse en mode Administrateur (sous Windows).


Pas besoin. Et mme  ne pas faire.

----------


## thierryler

Pour info, tu as des croix rouges sur mon projet parce que tu as tomcat 7 et moi tomcat 6. Ca se rgle dans les proprit du projet. Mais ce n'est rien.

----------


## thierryler

Bon j'ai fais marcher ton projet chez moi avec java 6 et tomcat 6 et je pense que tu devrais y arriver avec tomcat 7.

En fait, ton erreur est tellement norme que j'ai mis des heures  trouver. En fait la trace dit exactement ce qui se passe : tu as oubli de rendre publique ta servlet :



```

```

devrait tre



```

```

Ca mrite un  ::ccool::  et un gros merci l

----------


## Gugelhupf

Oh non ! Juste  cause de "*public*" ?

En tout cas je te dis un *grand merci* car jamais je ne l'aurai trouv ! 
Je ne met jamais le mot-cl public pour les classes (sauf *private class* lorsqu'il s'agit d'une classe interne).

Encore une fois je te remercie pour ton aide prcieuse thierryler !

----------


## thierryler

passe en rsolu

----------

