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 :

ORACLE ET WAS 5.0


Sujet :

Websphere Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut ORACLE ET WAS 5.0
    Bonjour j'ai l'erreur suivante quand j'essaie d'accéder à une source de donnée oracle dans un serveur d'appli DE TEST WAS5.0( intégré dans WSAD5.0).
    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
    36
    Caused by : 
    java.lang.ClassCastException: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection
    	at oracle.sql.StructDescriptor.createDescriptor(StructDescriptor.java:128)
    	at com.fidelia.extranet.entreprise.dossier.JDBCDossierServiceImpl.validerPrestations(JDBCDossierServiceImpl.java:347)
    	at com.fidelia.extranet.application.FIDELIAApplicationFacadeImpl.validerPrestations(FIDELIAApplicationFacadeImpl.java:508)
    	at com.fidelia.extranet.client.websphere.struts.ValiderPrestationsAction.valider(ValiderPrestationsAction.java:116)
    	at java.lang.reflect.Method.invoke(Native Method)
    	at com.gmfazur.struts.CommunDispatchAction.performAction(CommunDispatchAction.java:118)
    	at com.gmfazur.struts.CommunAction.perform(CommunAction.java:60)
    	at com.gmfazur.struts.CommunAction.execute(CommunAction.java:74)
    	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    	at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
    	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
    	at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
    	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
    	at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:258)
    	at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
    	at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
    	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:872)
    	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:491)
    	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:173)
    	at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:79)
    	at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:199)
    	at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
    	at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:114)
    	at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:187)
    	at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:331)
    	at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
    	at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:432)
    	at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:343)
    	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:592)
    la classe en question 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    public int validerPrestations(int in_codePrestataire, Vector in_prestations) throws FonctionnelEntrepriseException, SystemEntrepriseException {
        OracleCallableStatement cstmt = null;
      //OracleConnectionProxy connProxy = null;
        Connection conn = null;
        int l_nbLignRet = 0;
     
        try {
            // Recuperation de la connexion
            // On recupere une PhysicalConnection sur la Connection, sinon on obtient
            // un ClassCastException dans le code du driver Oracle, a la creation
            // du StructDescriptor.
     
          /* OC
              connProxy = (OracleConnectionProxy) getConnection(ORACLE_FIDELIA_JDBC);
              conn = connProxy.getPhysicalConnection();
          */
            conn = getConnection(ORACLE_FIDELIA_JDBC);
     
            // *** Creation du tableau de prestations a valider ***
            Struct[] prestations = new Struct[in_prestations.size()];
            // Descripteur de la structure Prestation
     [color=blue](ligne 347) [/color]      StructDescriptor prestationDesc = StructDescriptor.createDescriptor("REC_VAL",conn);
            // Parcours de la collection de prestations a valider
            Enumeration enum = in_prestations.elements();
            int i = 0;
            while (enum.hasMoreElements()) {
                // Creation d'une structure Prestation
                PrestationAValider l_prestation = (PrestationAValider) enum.nextElement();
                Object[] prestation_attributes = new Object[7];
                prestation_attributes[0] = new CHAR(l_prestation.getReferencePrestation(), CHARACTER_SET);
                prestation_attributes[1] = new NUMBER(l_prestation.getCoutReel());
                prestation_attributes[2] = new CHAR(l_prestation.getNumeroFacture(), CHARACTER_SET);// NO_FACT = numero facture
                prestation_attributes[3] = new CHAR(l_prestation.getMotif(), CHARACTER_SET);// CHOIX = motif
                prestation_attributes[4] = new CHAR(l_prestation.getCommentaire(), CHARACTER_SET);
                prestation_attributes[5] = new NUMBER(l_prestation.getComplementMotif());// NUM8 = complementMotif
                prestation_attributes[6] = new CHAR(l_prestation.getCodeValidation(), CHARACTER_SET);// ETAT = codeValidation
                Struct prestation = new STRUCT(prestationDesc, conn, prestation_attributes);
                // Ajout de la structure au tableau des prestations a valider
                prestations[i] = prestation;
                i++;
            }
     
            // Description du tableau des prestations a valider
            ArrayDescriptor array_desc = ArrayDescriptor.createDescriptor("LISTE_VAL", conn);
     
            Array array = new ARRAY(array_desc, conn, prestations);
     
            // *** Construction de la query ***      
            cstmt = (OracleCallableStatement) conn.prepareCall(APPEL_TRAITELISTEVAL);
            cstmt.setInt(1, in_codePrestataire);
            cstmt.setInt(2, in_prestations.size());
            cstmt.setArray(3, array);
            cstmt.registerOutParameter(4, Types.CHAR);
            cstmt.registerOutParameter(5, Types.CHAR);
            cstmt.registerOutParameter(6, Types.INTEGER);
     
            // *** Execution de la procedure ***
            cstmt.execute();
     
            // *** Gestion des erreurs ***
            checkRetour("JDBCDossierServiceImpl.validerPrestations(" + in_codePrestataire + ")", cstmt.getString(4), cstmt.getString(5));
     
            // *** Lecture du resultat ***
            l_nbLignRet = cstmt.getInt(6);
     
        } catch (FonctionnelEntrepriseException e) {
            throw e;
        } catch (Exception e) {
            throw new SystemEntrepriseException("JDBCDossierServiceImpl.validerPrestations(" + in_codePrestataire + ") : [" + e.getMessage() + "]", e);
        } finally {
            // C'est le connProxy que l'on ferme, surtout pas la connexion physique !
            finalizeJDBC(cstmt, /*OC connProxy*/conn);
        }
     
        return l_nbLignRet;
    }
    Aidez moi s'il vous plaît

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    le problème vient de ta connexion JDBC

    Essaie le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DataSource ds = (DataSource) objInitialContext.lookup(JNDI_DATASOURCE);
    Connection conn = ds.getConnection();
    OracleConnection oconn= (OracleConenction)WSJdbcUtil.getNativeConnection(( WSJdbcConnection)connection);
     
    StructDescriptor prestationDesc = StructDescriptor.createDescriptor("REC_VAL",oconn)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Merci pour ton aide mais je ne sais pas exactement ou mettre le code car il me génère pleins d'erreurs. Je vais quand même continuer en attendant de plus amples infos de ta part ou de quiconque voudra bien m'aider merci d'avance.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    Ce problème a été traité sur http://www.dbforums.com/showthread.php?threadid=816566

    Le bout de code que je t'ai fourni provient de ce forum et il vient à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    conn = getConnection(ORACLE_FIDELIA_JDBC);
    StructDescriptor prestationDesc = StructDescriptor.createDescriptor("REC_VAL",conn);

    Par contre dans cet exemple, l'appel à la source de données est fait via le nom JNDI de la datasource configuré dans Websphere (et non en JDBC comme dans ton exemple).

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Encore une fois merci pour ton aide mais je vais encore te demander de l'aide. Malgré l'intro de rsadapterspi.jar et rsexternal.jar j'ai connection et
    objInitialContext qui ne peuvent être résolus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (( WSJdbcConnection)connection) et objInitialContext.lookup("jdbc/FIDELIAEXTRANET");
    Il doit encore me manquer des jar mais je ne sais lesquels alors toute aide me sera précieuse.
    Merci d'avance

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    a_defanti voilà le code que j'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
              InitialContext objInitialContext = new InitialContext();
              Object connection = null;
    		OracleConnection oc = (OracleConnection)WSJdbcUtil.getNativeConnection(( WSJdbcConnection)connection);
              DataSource  objDS = (DataSource) objInitialContext.lookup("jdbc/FIDELIAEXTRANET");
                 Connection objCon = objDS.getConnection();
                   oconn = (OracleConnection)WSJdbcUtil.getNativeConnection(( WSJdbcConnection)connection);
    et voici la nouvelle erreur que j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Caused by : 
    java.lang.NullPointerException
    	at com.ibm.ws.rsadapter.jdbc.WSJdbcUtil.getNativeConnection(WSJdbcUtil.java:751)
    	at com.fidelia.extranet.entreprise.dossier.JDBCDossierServiceImpl.validerPrestations(JDBCDossierServiceImpl.java:352)
    	at com.fidelia.extranet.application.FIDELIAApplicationFacadeImpl.validerPrestations(FIDELIAApplicationFacadeImpl.java:508)
    	at com.fidelia.extranet.client.websphere.struts.ValiderPrestationsAction.valider(ValiderPrestationsAction.java:117)
    	at java.lang.reflect.Method.invoke(Native Method) etc.......
    donc maintenant ce que j'aimerais c'est comment resoudre ce problème. Mais avant tout merci pour ton aide car tu m'as fait avncé dans la recherche de la solution.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    D'après le code que tu as marqué c'est normal d'avoir une NullPointerException.

    Ton exception est levée lors de cet appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WSJdbcUtil.getNativeConnection(( WSJdbcConnection)connection);
    car la valeur de connection est bien null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Object connection = null;
    Tu devais vouloir écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WSJdbcUtil.getNativeConnection(( WSJdbcConnection)objCon);

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Avant tte chose merci pour ton aide. Voila le code modifié
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    public int validerPrestations(int in_codePrestataire, Vector in_prestations) throws FonctionnelEntrepriseException, SystemEntrepriseException {
        OracleCallableStatement cstmt = null;
      //  OracleConnectionProxy connProxy = null;
        OracleConnection oconn = null;
     
        //DataSource objDS = null;
        //Connection conn = null;
        int l_nbLignRet = 0;
     
        try {
            // Recuperation de la connexion
            // On recupere une PhysicalConnection sur la Connection, sinon on obtient
            // un ClassCastException dans le code du driver Oracle, a la creation
            // du StructDescriptor.
     
          /* OC
              connProxy = (OracleConnectionProxy) getConnection(ORACLE_FIDELIA_JDBC);
            conn = connProxy.getPhysicalConnection();
          */
            /*  J3A
            conn = getConnection(ORACLE_FIDELIA_JDBC);*/
     
     
              InitialContext objInitialContext = new InitialContext();
              Object connection = null;
              DataSource  objDS = (DataSource) objInitialContext.lookup("jdbc/FIDELIAEXTRANET");
              Connection objCon = objDS.getConnection();
    		  oconn = (OracleConnection)WSJdbcUtil.getNativeConnection(( WSJdbcConnection)connection);
     
     
                 /*ArrayDescriptor alVarrayChar = ArrayDescriptor.createDescriptor("type_array", oconn );
                    ARRAY queryCondition = new ARRAY(alVarrayChar, oc, conditionArray);*/
     
     
     
            // *** Creation du tableau de prestations a valider ***
            Struct[] prestations = new Struct[in_prestations.size()];
            // Descripteur de la structure Prestation
            StructDescriptor prestationDesc = StructDescriptor.createDescriptor("REC_VAL", oconn);
            // Parcours de la collection de prestations a valider
            Enumeration enum = in_prestations.elements();
            int i = 0;
            while (enum.hasMoreElements()) {
                // Creation d'une structure Prestation
                PrestationAValider l_prestation = (PrestationAValider) enum.nextElement();
                Object[] prestation_attributes = new Object[7];
                prestation_attributes[0] = new CHAR(l_prestation.getReferencePrestation(), CHARACTER_SET);
                prestation_attributes[1] = new NUMBER(l_prestation.getCoutReel());
                prestation_attributes[2] = new CHAR(l_prestation.getNumeroFacture(), CHARACTER_SET);// NO_FACT = numero facture
                prestation_attributes[3] = new CHAR(l_prestation.getMotif(), CHARACTER_SET);// CHOIX = motif
                prestation_attributes[4] = new CHAR(l_prestation.getCommentaire(), CHARACTER_SET);
                prestation_attributes[5] = new NUMBER(l_prestation.getComplementMotif());// NUM8 = complementMotif
                prestation_attributes[6] = new CHAR(l_prestation.getCodeValidation(), CHARACTER_SET);// ETAT = codeValidation
                Struct prestation = new STRUCT(prestationDesc, objCon, prestation_attributes);
                // Ajout de la structure au tableau des prestations a valider
                prestations[i] = prestation;
                i++;
            }
     
            // Description du tableau des prestations a valider
            ArrayDescriptor array_desc = ArrayDescriptor.createDescriptor("LISTE_VAL",objCon);
     
            Array array = new ARRAY(array_desc, objCon, prestations);
     
            // *** Construction de la query ***      
            cstmt = (OracleCallableStatement) objCon.prepareCall(APPEL_TRAITELISTEVAL);
            cstmt.setInt(1, in_codePrestataire);
            cstmt.setInt(2, in_prestations.size());
            cstmt.setArray(3, array);
            cstmt.registerOutParameter(4, Types.CHAR);
            cstmt.registerOutParameter(5, Types.CHAR);
            cstmt.registerOutParameter(6, Types.INTEGER);
     
            // *** Execution de la procedure ***
            cstmt.execute();
     
            // *** Gestion des erreurs ***
            checkRetour("JDBCDossierServiceImpl.validerPrestations(" + in_codePrestataire + ")", cstmt.getString(4), cstmt.getString(5));
     
            // *** Lecture du resultat ***
            l_nbLignRet = cstmt.getInt(6);
     
        } catch (FonctionnelEntrepriseException e) {
            throw e;
        } catch (Exception e) {
            throw new SystemEntrepriseException("JDBCDossierServiceImpl.validerPrestations(" + in_codePrestataire + ") : [" + e.getMessage() + "]", e);
        } finally {
            // C'est le connProxy que l'on ferme, surtout pas la connexion physique !
            finalizeJDBC(cstmt, /*OC connProxy*/oconn);
        }
     
        return l_nbLignRet;
    }
    }
    et voilà les nouvelles erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [05/01/06 17:18:39:497 CET] 6bb80b3a FreePool      E J2CA0046E: La méthode createManagedConnctionWithMCWrapper a intercepté une exception lors de la création de ManagedConnection pour la ressource jdbc/FIDELIAEXTRANET, lançant ResourceAllocationException.  Exception d'origine : com.ibm.ws.exception.WsException: DSRA8100E: Unable to get a PooledConnection from the DataSource.
    	at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:251)
    	at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:172)
    	at com.ibm.ws.rsadapter.AdapterUtil.createDataStoreAdapterException(AdapterUtil.java:182)
    	at com.ibm.ws.rsadapter.DSConfigurationHelper.getPooledConnection(DSConfigurationHelper.java:663)
    	at com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:189)
    	at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:503)
    	at com.ibm.ejs.j2c.poolmanager.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1106)
    	at com.ibm.ejs.j2c.poolmanager.FreePool.createOrWaitForConnection(FreePool.java:897)
    	at com.ibm.ejs.j2c.poolmanager.PoolManager.reserve(PoolManager.java:1065)
    et un peu plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Next Linked Exception:
    java.sql.SQLException: arguments non valides dans l'appel
    	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    MERCI POUR TES ECLAIRAGES EVENTUELS

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    Est ce que l'exception est lévée au moment ou tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connection objCon = objDS.getConnection();
    Si oui, tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connection objCon = objDS.getConnection(utilisateur_de_ta_base, mot_de_passe);

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    a_defanti TU ES UN ANGE. Merci pour ton aide. C'est parceque je n'avais pas crée ma fabrique de connexions que j'avais l'erreur sinon après l'avoir crée et activé la sécurité java en demandant à ce que l'authentification soit gérée par mon composant tout a fonctionné nickel. Merci donc pour ton aide.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Merci aussi à ceux qui ont pris la peine de lire mon msg. Je sais que si vous aviez la solution je l'aurais aussi eu de votre part. A plus

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Désolé d'avoir trop vite crié victoire mais bien que je puisse me connecter à la base je ne peux que faire des modifs sur la base qu'en une seule fois. Une fois que j'ai modifé et que je veux remodifier j'ai l'exception suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fr.improve.entreprise.SystemEntrepriseException: JDBCDossierServiceImpl.validerPrestations(38518) : [Le descripteur logique n'est plus valide]
    	at com.fidelia.extranet.entreprise.dossier.JDBCDossierServiceImpl.validerPrestations(JDBCDossierServiceImpl.java:418)
    	at com.fidelia.extranet.application.FIDELIAApplicationFacadeImpl.validerPrestations(FIDELIAApplicationFacadeImpl.java:508)
    	at com.fidelia.extranet.client.websphere.struts.ValiderPrestationsAction.valider(ValiderPrestationsAction.java:117)
    	at java.lang.reflect.Method.invoke(Native Method)
    et ensuite celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    java.sql.SQLException: Le descripteur logique n'est plus valide
    	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
    	at oracle.jdbc.driver.OracleConnection.checkPhyiscalStatus(OracleConnection.java:753)
    	at oracle.jdbc.driver.OracleConnection.privatePrepareCall(OracleConnection.java:1141)
    . Je ne sais pas si je dois reconfigurer ma fabrique ou si c'est ma procédure stockée qui fout la merde, ce qui m'étonnerait puisqu'elle fonctionne correctement sur la même base mais en WAS 3.5.
    Merci d'avance pour votre aide

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    a_defanti m'a aidé à resoudre le pb, il venait d'une non fermeture de ma connexion physique donc c'est bon c'est fait. Encore une fois merci les gars pour votre aide.

  14. #14
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    Et si on est pas sous Websphere ? par exemple j'utilise Tomcat en Dev et Weblogic en prod, et je n'ai pas le WSJdbcUtil.

    Quelle solution pour utiliser ArrayDescriptor sans ce ClassCastException ?

    Merci d'avance

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 167
    Points
    167
    Par défaut
    Salut voilà ce que j'ai trouvé en fouillant pour ne pas être dépendant du serveur d'appli.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);        	
            	jdbcTemplate.setNativeJdbcExtractor(new CommonsDbcpNativeJdbcExtractor() );
        		Connection con = jdbcTemplate.getNativeJdbcExtractor().getNativeConnection(dataSource.getConnection());
    J'avoue avoir encore un problème, j'utilise un ARRAY de STRUCT, je récupère bien la structure mais lorsque je cré un élement struct dans les règles il ne met pas les données dedans :s

    Le pl/qsl
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    CREATE OR REPLACE
    Type ASADDEV1.RETVAL as object
        (
        val1 CHAR(10),
        val2 CHAR(10)
        ); 
    /
     
    CREATE OR REPLACE
    Type ASADDEV1.LIST_RETVAL as table of RETVAL; 
    /
     
    CREATE OR REPLACE PACKAGE ASADDEV1.PKG_TEST
     IS
     
     
        PROCEDURE test_liste_in( liste IN LIST_RETVAL);
     
      End PKG_TEST ;
    /
     
    CREATE OR REPLACE PACKAGE BODY ASADDEV1.PKG_TEST IS
     
     
    PROCEDURE test_liste_in( liste IN LIST_RETVAL)
    is
        cnt number;
     
    begin
        cnt := 1;
     
     
        while cnt is not null
        loop
     
            insert into TEST (COL) values (liste(cnt).val1);
     
            cnt := liste.next(cnt);
     
        end loop;
     
    end;
     
     
    END PKG_TEST;
    /

    L'envoie de la strucure.
    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
     
                StructDescriptor desStruct = StructDescriptor.createDescriptor("RETVAL", con);
     
                Object[] struct_obj1 = new Object[2];
     
     
                struct_obj1[0] = new String("test11");
                struct_obj1[1] = new String("test12");
                STRUCT structure1=new STRUCT(desStruct,con,struct_obj1);
                ArrayDescriptor des = ArrayDescriptor.createDescriptor("LIST_RETVAL", con);
                // création du tableau avec un élément structure
                Object[] array_obj=new Object[]{structure1};
     
                ARRAY a = new ARRAY(des, con, array_obj);   
     
                System.out.println("test");
     
     
                inParams.put("THE_ARRAY", a);

    Le problème est que dans la variable structure1 lorsque je débug on voit clairement que celle-ci contient deux éléments mais sans données :
    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
     
    structure1	STRUCT  (id=114)	
    	data	null	
    	datumArray	Datum[2]  (id=119)	
    		[0]	CHAR  (id=127)	
    			charSet	CharacterSetUnknown  (id=132)	
    			data	byte[0]  (id=130)	
    			oracleId	46	
    		[1]	CHAR  (id=125)	
    			charSet	CharacterSetUnknown  (id=138)	
    			data	byte[0]  (id=137)	
    			oracleId	46	
    	descriptor	StructDescriptor  (id=109)	
    	enableLocalCache	false	
    	imageLength	0	
    	imageOffset	0	
    	objectArray	null	
    	physicalConnection	T4CConnection  (id=98)
    L'appel de ma procédure se fait bien mais insert null dans la table TEST . Du coup je me demande si ce n'est pas la manière dont je récupère la connexion qui est la cause, sachant que la structure de mon objet à pu être récupéré.

    Je sèche ^^
    Mon site : TKT-Web =)

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 167
    Points
    167
    Par défaut
    Solution : ajouter le jar orai18n.jar
    Mon site : TKT-Web =)

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Développeur blockchain
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur blockchain
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Points : 33
    Points
    33
    Par défaut Utilisation du orai18n.jar
    Citation Envoyé par Delwyn Voir le message
    Solution : ajouter le jar orai18n.jar
    Bonjour Delwyn,

    Je reprends la lecture de la liste de messages concernant ORACLE ET WAS 5.0 (06/2008).

    En effet, tu nous indiques qu'il faut utiliser orai18n.jar pour résoudre le problème ; Mais quel en est le mode d'emploi ?

    Merci d'avance pour ta réponse, et bonne journée.

    Chris

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

Discussions similaires

  1. XAER_RMERR sur WAS 8.5 et Oracle
    Par abdel4 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 0
    Dernier message: 16/04/2015, 12h56
  2. Réponses: 2
    Dernier message: 10/06/2013, 15h23
  3. Erreur Oracle XA avec le WAS
    Par ekremyilmaz dans le forum Websphere
    Réponses: 11
    Dernier message: 09/03/2011, 19h32
  4. WAS 6.1 et serveurs Oracle multiples
    Par phil.pasquier dans le forum Websphere
    Réponses: 1
    Dernier message: 01/02/2010, 20h39
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

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