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

Wildfly/JBoss Java Discussion :

Config d'une Datasource sous Oracle


Sujet :

Wildfly/JBoss Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Config d'une Datasource sous Oracle
    Bonjour tout le monde,

    J'ai un problème lors de la récuperation d'une connection a travers une Datasource fournie par EJB Stateless 2.0 :

    Object obj = ctx.lookup("MyDatasourceBean");
    MyDatasourceHome home = (MyDatasourceHome) PortableRemoteObject.narrow(obj,MyDatasourceHome.class);
    MyDatasourceRemote myDatasourceRemote = home.create();
    ds= (WrapperDataSource) myDatasourceRemote.giveDatasource("MyDS");

    Qd j''execute la ligne suivante, il lance l'exception :
    conn= (Connection) ds.getConnection();


    l'erreur est la suivante :

    [14/mars/2007 11:58:52:78] DEBUG: org.jboss.util.NestedThrowable.getBoolean : org.jboss.util.NestedThrowable.detectDuplicateNesting=true
    org.jboss.util.NestedSQLException: Problem locating real ConnectionManager: jboss.jca:service=LocalTxCM,name=MyDS; - nested throwable: (java.lang.IllegalStateException: No 'jboss' MBeanServer found!); - nested throwable: (Problem locating real ConnectionManager: jboss.jca:service=LocalTxCM,name=MyDS; - nested throwable: (java.lang.IllegalStateException: No 'jboss' MBeanServer found!))
    at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:94)
    at com.solutions.Auto.persistence.connection.DBManager.getConnection(DBManager.java:133)
    at com.solutions.Auto.persistence.dao.DaoFactory.createConnection(DaoFactory.java:57)
    at com.solutions.Auto.persistence.indicator.IndicatorDaoImpl.selectIndicators(IndicatorDaoImpl.java:66)
    at com.solutions.Auto.persistence.indicator.TestIndicatorDaoImpl.testSelectIndicators(TestIndicatorDaoImpl.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
    Caused by: Problem locating real ConnectionManager: jboss.jca:service=LocalTxCM,name=MyDS; - nested throwable: (java.lang.IllegalStateException: No 'jboss' MBeanServer found!)
    at org.jboss.resource.JBossResourceException.rethrowAsResourceException(JBossResourceException.java:61)
    at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.getCM(BaseConnectionManager2.java:881)
    at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:842)
    at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:88)
    ... 19 more

    Merci de votre aide

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    j'ai oublié une chose le xxx-ds.xml de la datasource :

    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!-- ===================================================================== -->
    <!--                                                                       -->
    <!--  JBoss Server Configuration                                           -->
    <!--                                                                       -->
    <!-- ===================================================================== -->
     
    <datasources>
      <local-tx-datasource>
        <jndi-name>MyDS</jndi-name>
        <!-- Using global namespace. In this case, JNDI name of Oracle DS is OracleDS -->
     
    	<connection-url>jdbc:oracle:thin:@152.18.12.10:1521:orcl</connection-url>
     
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
        <user-name>auto</user-name>
        <password>auto</password>
     
    	<connection-property name="char.encoding">UTF-8</connection-property>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
        <metadata>
             <type-mapping>Oracle9i</type-mapping>
        </metadata>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>20</max-pool-size> 
     
     
    <use-java-context>false</use-java-context>
     
      </local-tx-datasource>
     
    </datasources>


    la datasource que je recupère est une WrappedDataSource au lieu d'une Datasource normale !!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Si tu récupères un objet mais que son type diffère de ce à quoi tu t'attends, le problème vient surement de ton code et pas de la configuration de JBoss je pense.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    le problème c'est que un WrappedDataSource possède une méthode getConnection() qui renvoie une Connection..et si cette instruction lance une exception c'est que peut etre la connection n'est pas établie , enfin j pense !

  5. #5
    Membre éclairé Avatar de XmasRock
    Inscrit en
    Janvier 2007
    Messages
    729
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 729
    Points : 821
    Points
    821
    Par défaut
    une datasource de JBoss AS n'est accessible que à partir d'un code dans la même JVM. Le lookup utilise le domaine "java:/" signifiant que ce que tu obtiens ne doit pas être utilisé en dehors de la JVM.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Est comment j vais faire alors ?
    Merci

  7. #7
    Membre éclairé Avatar de XmasRock
    Inscrit en
    Janvier 2007
    Messages
    729
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 729
    Points : 821
    Points
    821
    Par défaut
    Ca dépend, qu'est-ce que tu veux faire ?

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Je voudrais juste recuperer une DataSource pour que je puisse utiliser par la suite des CallableStatement afin de manipuler des curseurs Oracle.

    J'ai déja utilisé des lookup directement pour recuperer la DataSource (comme le montre le code ci-dessous) mais cette méthode renvoyait un proxy.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    InitialContext initContext = new InitialContext();
            initContext.addToEnvironment(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
            initContext.addToEnvironment(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
            initContext.addToEnvironment(Context.PROVIDER_URL, "jnp://(monURL):1099");
     
            Object obj =  initContext.lookup("MyDS");
            logger.debug("objref class= " + obj.getClass());
            logger.debug("objref class= " + obj.getClass().getClassLoader());
            ds= (DataSource) obj;

    Quand j'exécute mes CallableStatement pour recuperer un cursor comme le montre le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    conn =df.createConnection();
    myCallableStatement =   conn.prepareCall("begin GET_INDICATORS(?,?); end;", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
     
    		myCallableStatement.setInt(1, param);
    		myCallableStatement.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
    		myCallableStatement.execute();
     
    		 rs = (ResultSet) (myCallableStatement).getObject(2);
    Dans la dernière ligne, il lance une exception de :
    java.lang.ClassCastException: $Proxy3

    une chose ! qd j'utilise une connection normale avec DriverManager.registerDriver(...) cette méthode marche nikel ! c'est prkoi j'ai pensé que c'était liée à la nature de connection !

    Merci beaucoup

  9. #9
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 137
    Points : 99
    Points
    99
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DataSource ds;
    Context ic;
    Connection connex = null;
    CallableStatement cs = null;
     
    ic = new InitialContext();
    ds = (DataSource) ic.lookup("java:jndi_connexion_name");
    connex = ds.getConnection();
    cs = (CallableStatement) connex.prepareCall("...............
    un truc tout bette comme ça, ça fonctionne pas ???

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 137
    Points : 99
    Points
    99
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Properties p=new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
    p.put(Context.PROVIDER_URL,"jnp://localhost:1099");
     
    ic = new InitialContext(p);
    ...
    Peut être avec ça, mais je suis même pas sur que ça soit necessaire pour les data-sources

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    C'est c que j'ai mis ...ça fonctionne pas :-(

    quand j'execute

    rs = (ResultSet) (myCallableStatement).getObject(2);

    il lance une exception de :
    java.lang.ClassCastException: $Proxy3

    et pour une connection normale avec DriverManager.registerDriver(...)
    tout fonctionne !! je suis contraint d'utiliser les datasources

    Merci de vos aides !

  12. #12
    Membre éclairé Avatar de XmasRock
    Inscrit en
    Janvier 2007
    Messages
    729
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 729
    Points : 821
    Points
    821
    Par défaut
    Tu executes ton code dans JBoss AS ?

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    je travaille sur une application standalone qui fait appel à cet EJB. L'EJB est bien deployé sur Jboss AS..

  14. #14
    Membre éclairé Avatar de XmasRock
    Inscrit en
    Janvier 2007
    Messages
    729
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 729
    Points : 821
    Points
    821
    Par défaut
    va voir au bas de cette page : http://wiki.jboss.org/wiki/Wiki.jsp?...figDataSources

    Notes que cette utilisation n'est pas recommandée

Discussions similaires

  1. deployer une application sous oracle
    Par nessing dans le forum Oracle
    Réponses: 1
    Dernier message: 21/07/2007, 10h13
  2. script d'exportation des données d'une table sous oracle
    Par pierre2410 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/06/2007, 22h26
  3. connaître la taille d'une table sous oracle
    Par loukili81 dans le forum Administration
    Réponses: 2
    Dernier message: 01/06/2007, 15h24
  4. Demarrage automatique d'une base sous oracle 9i
    Par tarekos dans le forum Oracle
    Réponses: 4
    Dernier message: 20/03/2006, 17h48
  5. Encore une jointure sous Oracle pour la route
    Par ebaynaud dans le forum Langage SQL
    Réponses: 15
    Dernier message: 04/11/2004, 11h40

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