IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Comment utiliser des méthodes d'un jar dans une JSP ?


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut Comment utiliser des méthodes d'un jar dans une JSP ?
    Bonjour à tous,

    Je suis confronté à un problème ennuyeux, je m'explique:

    je travaille sur un projet dont je n'ai pas les sources. Il est sous la forme d'un war et déjà déployé sur un serveur web. Il est possible au travers de cette application d'ajouter des jsp. Il faut référencer le nom et le chemin de celle-ci pour qu'elle soit ajoutée au menu et compilée à la volée.

    Mon problèmes est le suivant :

    Je souhaite que cette jsp utilise des fonctionnalités d'un jar que j'ai développé. J'ai placé ce jar dans le répertoire web-inf/lib et je fais un include de ma classe dans la jsp, en faisant référence à une classe du jar.

    L'include marche, mais lorsque j'instancie cette classe ou que je fais appelà une méthode statique, j'ai un null pointer exception qui apparait.

    Je ne comprends pas que l'inclusion compile (et ne compile pas si je me trompe de chemin) mais que l'utilisation de la classe importée cause cette erreur.

    Aurais-je raté quelque chose ?

  2. #2
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    include ?

    import tu veux dire ...


    tu peux juste montrer l'arborescence de ton jar
    et ta page JSP, ainsi que la StackTrace ?

    est-ce tu as compilé ton JAR avec la même version de JDK que celle de ton serveur ? (par version j'entends 5, 6 ou 7, pas les sous-versions)

    tu déploies dans quel serveur ? Tomcat, GlassFish ?

    Le problème, je pense c'est que ton jar ne sera pris en compte que si tu "reload" le contexte.

    A chaud, je te conseille de mettre tout bêtement ta classe dans "WEB-INF/classes".
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    Bonjour fxrobin,

    Tout d'abbord, merci de prendre un peu de temps pour mon problème.
    il s'agit bien d'un import :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page import="com.projet.custom.importxml.Launcher"%>
    ensuite, le jar je viens de tester en le compilant en 1.5 (la version de mon serveur) ce qui ne change pas l'erreur , mais qui aurait pu en causer une autre.

    je suis sous Tomcat 6.0.2

    ma trace est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    exception
     
    org.apache.jasper.JasperException: java.lang.NullPointerException
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	com.itesoft.share.ShareFilter.doFilter(ShareFilter.java:261)
     
    root cause
     
    java.lang.NullPointerException
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677)
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:818)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    	org.apache.jsp.ps_005fcapgem_005fgfs_005fimport_005fxml_005fcommand_jsp._jspService(ps_005fcapgem_005fgfs_005fimport_005fxml_005fcommand_jsp.java:351)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	com.itesoft.share.ShareFilter.doFilter(ShareFilter.java:261)
    mon jar est dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apachetomcat/webapps/Monprojet/WEB-INF/lib
    et les autres jars en fonctionnement sont dans ce même répertoire.

    Enfin, je n'ai pas le code de l'application web, je ne peux à l'heure actuelle qu'ajouter mon code dans le seul jar dont j'ai les sources et que je peux recompiler. C'est le seul point d'entrée dont je dispose. Ma jsp est dans le répertoire racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apachetomcat/webapps/Monprojet/
    est elle est compilée à la volée, j'ai la main sur presque rien.

    PS : pour mes tests, la classe launcher est un simple MOK:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package com.itesoft.custom.importxml;
     
    public class Launcher {
     
    	@Override
    	public String toString(){
    		return "[MOK]";
    	}
    }
    je pense qu'en faisant un new Launcher().toString() , je ne me trompe pas dans ma jsp (outre les bonnes pratiques des jsp)

    Cordialement

  4. #4
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    montre ta JSP ...
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    Voilà le code de ma JSP. J'ai enlevé tout ce qui marche, tout ce que je ne pense pas pouvoir montrer et tout ce qui ne servirait à rien pour ce problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ page errorPage="../errorpage.jsp" buffer="256kb"%>
    <%@ page import="java.util.Locale"%>
    <%@ page import="java.util.Date"%>
    <%@ page import="com.jsp.*"%>
     
     
    <%@ page import="com.itesoft.custom.importxml.Launcher"%>
     
     
     
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.ArrayList"%>
     
     
    <%
            
            String debug = new Launcher().toString();
        
    %>
    <!DOCTYPE html>
    <html lang="en">
     <head>
     
     
     </head>
     	<body>
     
                <form action="import.jsp" method="post">
                    <jsp:include page="commonheader.jsp" />
                    <p class="infos">DEBUG : [-<b><%=debug %></b>-]</p>	      
     	</form>
     	</body>
    </html>

  6. #6
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    le problème c'est que ton .jar ne sera pris en compte que si tu rédémarre l'applicaiton ou le serveur d'application.

    Si l'application tourne déjà, ta JSP ne "verra" pas le .jar

    du coup j'ai plein de questions :

    1 - Est-ce que tu rédémarre l'appli ou le serveur ?
    2 - Comment déploies-tu ton jar et ta jsp ? simple copie de fichier sur le servueur ?
    3 - Tu es sous Windows ou Linux ? (Service Windows ?)
    4 - Est-ce que les droits d'accès sur ton .jar sont bon ? (par le compte qui fait tourner ton serveur d'app)
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    Bonjour fxrobin, merci encore pour tes réponses précises,

    mon serveur est un unix avec un tomcat. je n'ai pas d'accès autre que FTP, au travers duquel je peux modifier les droits sur mon jar. Il faut que je bataille pour obtenir le droit de relancer le serveur. Enfin, concernant le user de l'application, je ne sais pas quels droits sont associés. le développement de mon "plugin" n'est pas évident dans ces conditions, mais je n'ai pas vraiement le choix...

    Merci.

  8. #8
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    donc c'est ce que je disais ...

    si tu upload ton jar, seul un redémarrage serveur (ou du contexte) fait qu'il sera pris en compte ...

    je te conseille plutôt de mettre ta classe dans le répertoire "qui va bien" dans WEB-INF/classes, sans la packager dans un JAR.

    Il faut que tu connaisses les droits avec lesquels tu uploads par FTP, car il se peut que le compte qui fait tourner ton Tomcat n'est tout simplement pas le droite de lire le fichier (ce qui est peu probable, puisqu'il arrive à relire ta JSP)
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    Salut fxrobin,

    tu avais bien raison, je devais redémarrer l'application.

    Ca marche maintenant.

    Merci !

  10. #10
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    oublie pas de cliquer sur les petits pouces vert sur les réponses qui t'ont aidé à résoudre ton souci
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Comment utiliser des variables d'un fichier dans un autre
    Par condor666 dans le forum C#
    Réponses: 4
    Dernier message: 03/10/2011, 15h50
  2. Réponses: 1
    Dernier message: 22/11/2007, 23h52
  3. Réponses: 4
    Dernier message: 15/08/2007, 23h05
  4. Réponses: 4
    Dernier message: 05/05/2007, 20h12
  5. [VBA-E] Comment copier des dates du contrôle calendar dans une boite de texte
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/02/2007, 08h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo