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

Websphere Java Discussion :

lire la liste des classes d'un package sous Websphere


Sujet :

Websphere Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 81
    Points : 84
    Points
    84
    Par défaut lire la liste des classes d'un package sous Websphere
    Bonjour,

    à l'aide de ce forum, j'avais réussi à récupérer la liste des classes d'un package (se trouvant dans un jar) dans une application Jonas.

    Le code ci-dessous fonctionne sous Jonas.

    Je viens d'installer ce code sous Websphere et l'énumération récupérée est vide.

    Est ce une contrainte Websphere ? Si oui, comment puis je faire ?

    Ou est du au fait que le war est contenu dans un ear alors qu'avant j'installais juste un war ? Si oui, comment puis je faire ?


    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
    // Mis en forme du nom du package pour la methode getresources
    String name = new String(nom_package);
    name = name.replace('.','/');
     
    URL url = null; 
    Enumeration enum = null;
    try
    {
    	 // Recuperation sous forme d'enumeration de la liste des URL contenant ce package
    	enum = Utilitaire.class.getClassLoader().getResources(name);
    }
    catch (IOException e1)
    {
    	// TODO Auto-generated catch block
    	e1.printStackTrace();
    }
    if (enum!=null) {
    	// Parcourt la liste des URL
    	while (enum.hasMoreElements()) {
     
    		// Récupération d'une URL
    		url = (URL) enum.nextElement();
                              ...
    Je vous remercie pour les réponses que vous pourrez m'apporter.

    Arnaud

  2. #2
    Membre actif Avatar de coco62
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 237
    Points : 278
    Points
    278
    Par défaut
    Une différence possible est l'organisation des Classloader.

  3. #3
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Ta classe Utilitaire et les classes du packages sont toutes déployées ? Ou elles sont dans un jar ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 81
    Points : 84
    Points
    84
    Par défaut
    Je viens de trouver comment à priori récupérer une énumération non vide.

    Le package que je renseignais sous Jonas était xxx/yyy/zzz alors que sous Websphere il a fallu rajouté un anti-slash xxx/yyy/zzz/.

    Je ne sais pas d'où vient cette différence ?

    Par contre, l'URL que je récupère dans cette énumération, je n'arrive pas à la lire avec URLConnection comme je le faisais auparavant.

    J'ai cru voir que le chemin de cette nouvelle URL commencait par wsjar.

    Savez vous avec quelle classe je peux parcourir le jar récupéré pour déterminer la liste des classes du package ?

    Merci par avance de vos réponses.

    Arnaud

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 81
    Points : 84
    Points
    84
    Par défaut
    Le pb que je rencontre est quand j'essaye de caster mon URLConnection en JarURLConnection.

    Voici le type d'objet que je récupère quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    URLConnection con = url.openConnection();
    type :

    com.ibm.ws.classloader.Handler$ClassLoaderURLConnection

    Voici la valeur de l'objet :

    wsjar:file:/C:/IBM/WebSphere/AppServer/profiles/C2100.1/installedApps/C302414NNode01Cell/test-generique-services-app.ear/test-generique-services-web.war/WEB-INF/lib/nci-servicescristal.jar!/cnaf/cristal/services/

    Comment puis je faire sachant que cet objet n'est pas du type JarURLConnection ?

    Voici le code que j'avais au préalable avec l'objet JarURLConnection :

    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
    JarURLConnection conn = (JarURLConnection)url.openConnection();
    String starts = conn.getEntryName();
    JarFile jfile = conn.getJarFile();
    Enumeration e = jfile.entries();
     
    while (e.hasMoreElements()) {
    	// Parcourt les differents elements du jar
                 ZipEntry entry = (ZipEntry)e.nextElement();
    	String entryname = entry.getName();
    	if (entryname.startsWith(starts)&&(entryname.lastIndexOf('/')<=starts.length())						&&entryname.endsWith(".class")) {
    		// Ne prends que les fichiers class appartenant au package dans le JAR
    		// Ne recupere que le nom de la classe sans le package
    		String classname = entryname.substring(0,entryname.length()-6);
    		if (classname.startsWith("/"))
    		{
    			classname = classname.substring(1);
    		}
    		classname = classname.substring(starts.length()+1);
    		listService.add(classname);
    	}
    }

Discussions similaires

  1. Récupérer la liste des classes d'un package
    Par Coulon Arnaud dans le forum Général Java
    Réponses: 20
    Dernier message: 30/12/2010, 00h04
  2. Connaitre la liste des classes implémentant une interface
    Par luckyvae dans le forum Général Java
    Réponses: 5
    Dernier message: 23/12/2008, 12h10
  3. Réponses: 0
    Dernier message: 11/02/2008, 18h01
  4. liste des class java
    Par mitoubra dans le forum Général Java
    Réponses: 2
    Dernier message: 25/01/2008, 10h43
  5. Liste des classes d'un package d'un PlugIn
    Par SpIrIt505050 dans le forum Langage
    Réponses: 2
    Dernier message: 25/07/2007, 15h45

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