pb servlet java pour alivePdf

pb servlet java pour alivePdf - Java - Programmation

Marsh Posté le 01-12-2009 à 13:43:36    

Bonjour,
j'essaie d'utiliser alivePdf pour ... générer des pdfs, eh oui, ça marche très bien avec le script php fourni, par contre je me casse les dents depuis plusieurs jours en essayant de créer une servlet java... Je développe sous Eclipse Ganymède, avec Tomcat 6. Je n'ai pas de problème pour générer mon fichier WAR, ni pour le déployer via l'interface Manager de Tomcat, par contre, quand j'essaie de l'atteindre, j'ai le message d'erreur suivant: "HTTP Status 404 - /CreatePDFServlet/
type Status report
message /CreatePDFServlet/
description The requested resource (/CreatePDFServlet/) is not available."
Je ne sais vraiment pas d'où vient cette erreur. Je suppose que la source en est mon web.xml, mais je suis total nioubie en java, et je ne vois pas où est l'erreur.
 
Merci par avance si quelqu'un peut m'aider!
Cyrill

Reply

Marsh Posté le 01-12-2009 à 13:43:36   

Reply

Marsh Posté le 01-12-2009 à 14:36:51    

Dans le web.xml, tu dois définir ta servlet :

Code :
  1. <servlet>
  2.   <servlet-name>createPDFServlet</servlet-name>
  3.   <description>création de PDF</description>
  4.   <servlet-class>fr.toto.mopackage.CreatePDFServlet</servlet-class>
  5. </servlet>
 

Ensuite tu dois définir un mapping qui fait le lien entre l'url appelée et la servlet définie.

Code :
  1. <servlet-mapping>
  2.   <servlet-name>createPDFServlet</servlet-name>
  3.   <url-pattern>/CreatePDFServlet</url-pattern>
  4. </servlet-mapping>



Message édité par Bidem le 01-12-2009 à 14:37:19
Reply

Marsh Posté le 01-12-2009 à 14:54:27    

Merci,
mon web.xml est fait ainsi:

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE web-app
  3. PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  4. "http://java.sun.com/dtd/web-app_2_3.dtd">
  5. <web-app>
  6. <display-name>CreatePDFServlet</display-name>
  7. <description>
  8. </description>
  9. <!-- Define servlets that are included in the example application -->
  10. <servlet>
  11. <servlet-name>
  12. CreatePDFServlet
  13. </servlet-name>
  14. <servlet-class>
  15. com.CreatePDFServlet
  16. </servlet-class>
  17. </servlet>
  18. <servlet-mapping>
  19. <servlet-name>
  20. CreatePDFServlet
  21. </servlet-name>
  22. <url-pattern>
  23. /CreatePDFServlet
  24. </url-pattern>
  25. </servlet-mapping>
  26. <servlet-mapping>
  27. <servlet-name>invoker</servlet-name>
  28. <url-pattern>/servlet/*</url-pattern>
  29. </servlet-mapping>
  30. <!-- Security roles referenced by this web application -->
  31. <security-role>
  32. <role-name>role1</role-name>
  33. </security-role>
  34. <security-role>
  35. <role-name>tomcat</role-name>
  36. </security-role>
  37. </web-app>


Je pense que le pb vient de ce fichier, mais je ne vois pas d'où...

Reply

Marsh Posté le 01-12-2009 à 15:00:22    

Et elle ressemble à quoi l'url que tu essayes ?
http://localhost:8080/moncontexte/CreatePDFServlet
ou
http://localhost:8080/CreatePDFServlet ?
 
PS : tu veux aussi virer le mapping sur la servlet "invoker" qui n'est plus disponible par défaut depuis Tomcat 5 ou 6

Reply

Marsh Posté le 01-12-2009 à 15:03:27    

Reply

Marsh Posté le 01-12-2009 à 19:06:07    

Là il te manque le contexte de la webapp à moins que tu ais défini explicitement / comme racine

Reply

Marsh Posté le 02-12-2009 à 10:56:49    

Bidem a écrit :

Là il te manque le contexte de la webapp à moins que tu ais défini explicitement / comme racine


Merci,
mais saurais-tu comment je dois le définir dans mon web.xml? Ou dans mon adresse?

Reply

Marsh Posté le 02-12-2009 à 11:52:33    

Dans Eclipse, dans la perspective Server si tu "ouvres" ton serveur (double clic ou F3), ça affiche l'éditeur de conf du serveur.
 
L'onglet "Modules" permet de gérer les différents contexte (webapps) lancés par ce serveur.
 
Fait un Edit... et change le Path à /

Reply

Marsh Posté le 02-12-2009 à 12:10:54    

Bidem a écrit :

Dans Eclipse, dans la perspective Server si tu "ouvres" ton serveur (double clic ou F3), ça affiche l'éditeur de conf du serveur.
 
L'onglet "Modules" permet de gérer les différents contexte (webapps) lancés par ce serveur.
 
Fait un Edit... et change le Path à /


 
Merci, mais je ne trouve pas de perspective "server" dans Eclipse?

Reply

Marsh Posté le 02-12-2009 à 14:56:54    

Citation :

Je développe sous Eclipse Ganymède, avec Tomcat 6. Je n'ai pas de problème pour générer mon fichier WAR, ni pour le déployer via l'interface Manager de Tomcat

 

Au temps pour moi, je pensais que tu lançais ton tomcat directement dans Eclipse.

 

Dans le manager de tomcat, tu dois voir le nom du contexte (c'est le nom de ton war normalement)

 

Ajoute le contexte dans l'url que tu testes, ça devrait mieux marcher.

 

PS un peu de doc à lire : Tomcat : Configuration du contexte

Message cité 1 fois
Message édité par Bidem le 02-12-2009 à 14:58:26
Reply

Marsh Posté le 02-12-2009 à 14:56:54   

Reply

Marsh Posté le 02-12-2009 à 15:07:24    

Bidem a écrit :

Citation :

Je développe sous Eclipse Ganymède, avec Tomcat 6. Je n'ai pas de problème pour générer mon fichier WAR, ni pour le déployer via l'interface Manager de Tomcat


 
Au temps pour moi, je pensais que tu lançais ton tomcat directement dans Eclipse.
 
Dans le manager de tomcat, tu dois voir le nom du contexte (c'est le nom de ton war normalement)
 
Ajoute le contexte dans l'url que tu testes, ça devrait mieux marcher.
 
PS un peu de doc à lire : Tomcat : Configuration du contexte


 
En fait, depuis Eclipse, j'exporte mon WAR vers le bureau. Puis depuis Tomcat je le sélectionne et fais "déployer". Il apparait bien dans la liste, mais avec "running" à false, et si je fais "start", il me dit :  
   
FAIL - Application at context path /CreatePDFServlet could not be started
 

Reply

Marsh Posté le 02-12-2009 à 15:30:13    

Oulà, j'ai peur. Il s'appelle comment ton war ?

 

S'il s'appel CreatePDFServlet alors tu m'as enduis d'erreur depuis le début (je croyais bêtement que c'était une servlet)

 

Sinon, regarde dans le fichier <tomcat>/logs/catalina.out, il y des chances que tu ais des erreurs empéchant le démarage du contexte.

Message cité 1 fois
Message édité par Bidem le 02-12-2009 à 15:30:30
Reply

Marsh Posté le 02-12-2009 à 15:37:32    

Bidem a écrit :

Oulà, j'ai peur. Il s'appelle comment ton war ?

 

S'il s'appel CreatePDFServlet alors tu m'as enduis d'erreur depuis le début (je croyais bêtement que c'était une servlet)

 

Sinon, regarde dans le fichier <tomcat>/logs/catalina.out, il y des chances que tu ais des erreurs empéchant le démarage du contexte.

 

Mon WAR s'appelle bien CreatePDFServlet, c'est pas bon?
j'ai trouvé ça:
02/12/2009 03:05:07 م org.apache.catalina.startup.ContextConfig applicationWebConfig
SEVERE: Parse error in application web.xml file at jndi:/localhost/CreatePDFServlet/WEB-INF/web.xml
java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name invoker
pourtant mon web.xml me semble correct???
<?xml version="1.0" encoding="ISO-8859-1"?>

 

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

 

<web-app>

 

<display-name>CreatePDFServlet</display-name>
<description>

 

</description>

 

<!-- Define servlets that are included in the example application -->

 

<servlet>
<servlet-name>
CreatePDFServlet
</servlet-name>
<servlet-class>
com.CreatePDFServlet
</servlet-class>
</servlet>

 

<servlet-mapping>
<servlet-name>
CreatePDFServlet
</servlet-name>
<url-pattern>
/CreatePDFServlet
</url-pattern>
</servlet-mapping>

 

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

 

<!-- Security roles referenced by this web application -->
<security-role>
<role-name>role1</role-name>
</security-role>
<security-role>
<role-name>tomcat</role-name>
</security-role>

 

</web-app>


Message édité par achim le 02-12-2009 à 15:49:02
Reply

Marsh Posté le 02-12-2009 à 16:44:43    

Citation :

java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name invoker


Citation :

PS : tu veux aussi virer le mapping sur la servlet "invoker" qui n'est plus disponible par défaut depuis Tomcat 5 ou 6


Donc, c'est bien le mapping sur invoker qu'il faut virer.

 

Et comme tu as nommé ton appli de la même façon que ta servlet, l'url à appeler c'est
http://localhost:8080/CreatePDFServlet/CreatePDFServlet

 

Message cité 1 fois
Message édité par Bidem le 02-12-2009 à 16:46:56
Reply

Marsh Posté le 02-12-2009 à 16:54:36    

Bidem a écrit :

Citation :

java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name invoker


Citation :

PS : tu veux aussi virer le mapping sur la servlet "invoker" qui n'est plus disponible par défaut depuis Tomcat 5 ou 6


Donc, c'est bien le mapping sur invoker qu'il faut virer.

 

Et comme tu as nommé ton appli de la même façon que ta servlet, l'url à appeler c'est
http://localhost:8080/CreatePDFServlet/CreatePDFServlet

 


 

ok, merci.
J'ai viré ce mapping, désormais l'appli est démarrée dans le manager Tomcat.
Néanmoins j'ai toujours ce message d'erreur lorsque je clique dessus dans le manager: type Exception report

 

message

 

description The server encountered an internal error () that prevented it from fulfilling this request.

 

exception

 

java.lang.NegativeArraySizeException
 com.CreatePDFServlet.doGet(CreatePDFServlet.java:25)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

 

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.


Message édité par achim le 02-12-2009 à 16:56:10
Reply

Marsh Posté le 02-12-2009 à 17:12:45    

Citation :

java.lang.NegativeArraySizeException
 com.CreatePDFServlet.doGet(CreatePDFServlet.java:25)


Lis avec ton doigt
 
Surement qu'à la ligne 25 de CreatePDFServlet.java tu créés un tableau en lui spécifiant une taille négative...

Reply

Marsh Posté le 02-12-2009 à 17:33:48    

Bidem a écrit :

Citation :

java.lang.NegativeArraySizeException
 com.CreatePDFServlet.doGet(CreatePDFServlet.java:25)


Lis avec ton doigt
 
Surement qu'à la ligne 25 de CreatePDFServlet.java tu créés un tableau en lui spécifiant une taille négative...


oui, j'ai bien compris... Le pb est désormais du côté de mon code ActionScript, qui ne doit pas envoyer à manger à l'appli, car ligne 25 je ne fais que récupérer les données binaires de mon fichier flash.
Encore merci pour ton aide précieuse!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed