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

Hibernate Java Discussion :

Hibernate et weblogic


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut Hibernate et weblogic
    Bonjour,

    J'ai développé toute une appli qui fonctionne correctement avec Hibernate en utilisant le serveur Tomcat.

    Maintenant je dois utiliser le serveur Weblogic et ca ne marche pas !

    J'ai une erreur java "NoClassDefFound" et je peux pas voir mes logs hibernate.

    Faut-il faire des chagements lorque l'on change de serveur ? Cela peut il venir des transactions ? car j'ai vu qu'il y avait une classe de transaction pour weblogic : "WeblogicTransactionManagerLookup" ???

    Merci de votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tout dépend comment tu as géré tes transactions.
    Si tu les as codées toi même, ce que je pense, tu ne devrais pas avoir de modif à faire.
    Il me semble que la classe que tu cites sert dans le cas, ou tu laisses le conteneur gérer les transactions.

    Il faudrait que tu puisses voir les logs de Weblogic pour comprendre.
    Peut-être est-ce le driver de ta base qui n'est pas trouvé.

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut
    Salut,

    Je peux te montrer un exemple d'utilisation des transactions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Ouverture de la session de connection à la BD
    s = HibernateUtil.getCurrentSession();	
     
    // Début de la transaction
    s.beginTransaction();
     
    // Requête HQL
    Query q = s.getNamedQuery("maRequete");
    o = (Object[])q.uniqueResult();
     
    // Validation de la transaction
    s.getTransaction().commit();
    Le tout entourer d'un try catch, où dans le catch je fais un fais un rollback, et dans le finally je fais je close la session Hibernate.

    ALors ça nécessite des changements à ton avis ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Si tu n'as pas redéfini hibernate.transaction.factory_class dans ton hibernate.cfg, ça devrait aller.

    Tu ne peux vraiment pas avoir les logs ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Par défaut
    moi je développe une appli avec en local le serveur tomcat et sinon sur weblogic
    dans mon fichier hibernate.cfg.xml j'ai la partie pour tomcat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <!-- Tomcat connection settings -->
    <property name="hibernate.connection.url">blah</property>
            <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
            <property name="connection.username">blah</property>
            <property name="connection.password">blah</property>
    pour weblogic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!-- Weblogic connection settings -->
    <property name="connection.datasource">DataSource</property>
    <property name="transaction.manager_lookup_class">			org.hibernate.transaction.WeblogicTransactionManagerLookup
    </property>
    (et donc je commente une des deux parties en fonction)

    et apres j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!-- Oracle 9i Dialect -->
    <property name="dialect">
    org.hibernate.dialect.Oracle9Dialect
    </property>
    <property name="hibernate.transaction.factory_class">
    org.hibernate.transaction.JDBCTransactionFactory
    </property>
    et tout fonctionne comme il faut

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Ok, mais en théorie la partie que tu utilises pour Tomcat devrait fonctionner
    sans modif pour Weblogic.
    Rien ne t'oblige à utiliser un Datasource avec Weblogic.

  7. #7
    Membre éclairé
    Profil pro
    Abcde
    Inscrit en
    Août 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Abcde
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2004
    Messages : 59
    Par défaut
    quelle version de weblogic ?
    weblogic a des classloaders qui fonctionnent differement de ceux de tomcat.
    Souvent les problemes sont du fait que les jars weblogic sont prioritaires par défaut sur ceux de ta webapp (classes et WEB-INF/lib)..

    et que weblogic.jar inclus bon nombre de vieilles versions de produits open source comme xerces, antlr....et en plus ceux sont ne sont pas tous repackagé (org.apache.xerces ---> weblogic.xerces) et donc ton appli charge des classes qui sont un peu anciennes.

    La solution : inclure le descripteur de deploiement permettant d'activer des options propres a weblogic : weblogic.xml (dans WEB-INF ) et de mettre l'option qui permet de charger les jars de WEB-INF/lib avant ceux de weblo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      <container-descriptor> 
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
      </container-descriptor>
    de plus, il ne faut pas que tu livre xml-apis.jar contenu dans la distribution hibernate sous weblogic...

    sinon voir la doc weblo (ou utilise l'outil wEBLOGIC BUILDER)

    @+

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    J'ai un problème équivalent. Mon appli fonctionne avec Tomcat5.5 mais pas avec WebLogic 8.1. L'appli est compilée en Java 1.4.
    L'erreur :
    Error 500--Internal Server Error

    java.lang.Exception: Utilisateurs - getUserByLogin - HibernateException
    at fr.monappli.business.utilisateur.Utilisateurs.getUserByLogin(Utilisateurs.java:51)
    at fr.monappli.action.LogonAction.execute(LogonAction.java:58)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
    getUserByLogin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session.beginTransaction();
    List listeUsers = session.createQuery("ma requete").setString("login", login).list();
    J'ai supprimé "hibernate.transaction.factory_class", ajouté un fichier weblogic.xml comme indiqué, il n'y a pas de fichier xml-apis.jar. Et pareil je n'arrive pas à avoir de log plus précis. L'erreur est sur le catch de l'exception.
    J'utilise un datasource.
    Et je n'arrive pas à trouver ce Weblogic Builder !

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    L'exception était mal catchée. La complete donne :
    ClassNotFoundException: org.hibernate.hql.ast.HqlToken

    J'ai ajouté un bon fichier weblogic.xml dans le WEB-INf et ça marche :
    <weblogic-web-app>
    <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
    </weblogic-web-app>

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2007, 18h22
  2. Pb config hibernate console avec weblogic
    Par lili2704 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/03/2007, 17h01
  3. Weblogic 8.1 + Hibernate : pb de cache
    Par Christophe P. dans le forum Weblogic
    Réponses: 1
    Dernier message: 17/01/2007, 14h01
  4. Weblogic 8.1 + Hibernate : pb de cache
    Par Christophe P. dans le forum Hibernate
    Réponses: 1
    Dernier message: 17/01/2007, 14h01
  5. Réponses: 2
    Dernier message: 16/02/2006, 09h04

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