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

JDBC Java Discussion :

Connexion SQL SERVER, AS400 et EBCDIC


Sujet :

JDBC Java

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut Connexion SQL SERVER, AS400 et EBCDIC
    Bonjour,

    Je souhaite faire un SELECT dans une base AS400 via une appli web J2EE Struts, serveur Websphere mais je ne sais absolument pas :
    - comment configurer la connexion au niveau du serveur (paramètres ?)
    - écrire le code permettant d'accéder à la base et de récupérer les données (en JAVA)
    - convertir les données récupérées (caracteres EBCDIC) en données lisibles (ASCII ????)

    Je souhaite églement récupérer des données d'une base SQL SERVER, quel est le code permettant d'accéder à la base et de récupérer les données (tjs en Java)


    Quelqu'un peut-il m'aider ?

    Merci pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par babylone7
    Je souhaite faire un SELECT dans une base AS400 via une appli web J2EE Struts, serveur Websphere mais je ne sais absolument pas :
    - comment configurer la connexion au niveau du serveur (paramètres ?)
    - écrire le code permettant d'accéder à la base et de récupérer les données (en JAVA)
    - convertir les données récupérées (caracteres EBCDIC) en données lisibles (ASCII ????)
    Les drivers JDBC sont là pour cela. Il te faut juste trouver le bon driver JDBC, et voir comment le configurer pour accéder à ta base (DB2 ?) sur l'AS400.

    Si c'est du DB2, il te faut créer un Datasource (pas obligé mais c'est mieux) en utilisant le driver JDBC spécifique AS400 jt400.jar.

    - renseigner la variable WAS : OS400_TOOLBOX_JDBC_DRIVER_PATH
    - configurer les données d’authentification J2C (JASS) : user / password
    - créer un fournisseur JDBC en sélectionnant : DB2 UDB for iSeries (ToolBox) Universal JDBC Driver Provider
    - créer le datasource en renseignant Propriétés Supplémentaires/Propriétés Personnalisées:
    * serverName
    * access (readOnly si on n'accède qu'en lecture)
    * blockCriteria = 0 (je ne sais plus à quoi ça sert )

    Ensuite tu utilises ton datasource comme d'habitude

    Jacques Desmazières

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut
    Merci Jacques !
    Je vais essayer d'appliquer tout ça, j'avoue que je suis un peu perdue (je ne sais meme pas si ma base c'est du DB2).
    Par contre, j'ai bien le droit de créer plusieurs datasource au niveau de mon serveur ? (Il m'en faut un SQL Server, un AS400 et j'en ai déjà un Informix) ?

    Et au niveau du struts-config faut faire qqch ? (mon datasource informix déja existant n'est pas déclaré dans le struts-config, il est déclaré juste dans le serveur)


    Pour la configuration,

    - où dois-je renseigner la variable WAS ? cela ne va-t-il pas avoir d'impact sur les autres connexions ?
    - où dois-je configurer les données d’authentification J2C ?..
    - j'ai "DB2 UDB for iSeries (ToolBox)" et "DB2 Universal JDBC Driver Provider" mais "pas DB2 UDB for iSeries (ToolBox) Universal JDBC Driver Provider"...
    - j'ai pas de Propriétés Supplémentaires/Propriétés Personnalisées.. :/

    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Je vais essayer d'appliquer tout ça, j'avoue que je suis un peu perdue (je ne sais meme pas si ma base c'est du DB2).
    Ca va pas aider, même si il y a de grandes chances que ce soit effdectivement du DB2

    Par contre, j'ai bien le droit de créer plusieurs datasource au niveau de mon serveur ? (Il m'en faut un SQL Server, un AS400 et j'en ai déjà un Informix) ?
    Oui pas de problème, tu peux en déclarer autant que tu veux

    Et au niveau du struts-config faut faire qqch ? (mon datasource informix déja existant n'est pas déclaré dans le struts-config, il est déclaré juste dans le serveur)
    Là ce n'est pas mon domaine, nous n'utilisons pas les Datasource au niveau Struts mais dans la couche Business


    Pour la configuration,
    En quelle version de Websphere es-tu ? Les infos que je t'ai données sont pour la console WAS5

    - où dois-je renseigner la variable WAS ? cela ne va-t-il pas avoir d'impact sur les autres connexions ?
    Dans Environnement / Gestion des variables Websphere. Cela n'a pas d'impact (elle existe mais n'est normalement pas déclarée) sauf si il y a dejà des datasources DB2 sur ce serveur.

    - où dois-je configurer les données d’authentification J2C ?..
    Sécurité / Configuration JAAS / Données d'authentification J2C

    - j'ai "DB2 UDB for iSeries (ToolBox)" et "DB2 Universal JDBC Driver Provider" mais "pas DB2 UDB for iSeries (ToolBox) Universal JDBC Driver Provider"...
    C'est le premier qu'il faut prendre.

    - j'ai pas de Propriétés Supplémentaires/Propriétés Personnalisées..
    Fournisseur JDBC / <ton fournisseur JDBC> / Sources de données / <ton datasource> / Propriétés personnalisées

    J'espère que cela te permettra d'avancer

    Jacques Desmazières

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut
    1000 mercis Jacques, en mettant ""DB2 UDB for iSeries (ToolBox)" j'accède bien aux propriétés dont tu me parlais.
    En attendant d'avoir un compte pour accéder à cette base, peux tu m'aiguiller sur la meme chose pour SQL Server ?

    Merci !!!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par babylone7
    En attendant d'avoir un compte pour accéder à cette base, peux tu m'aiguiller sur la meme chose pour SQL Server ?
    Le principe est le même, mais je ne l'ai jamais mis en oeuvre, mais tu dois trouver une doc détaillée sur le net avec ce cas précis. Sinon lorsque nous devons accéder à SqlServer, nous utilisons le driver gratuit jTds qui fonctionne très bien, mais je ne pense pas qu'il soit pris en compte nativement par Websphere et dans ce cas il suffit de déclarer le fournisseur JDBC comme un fournisseur "user-defined JDBC provider"

    Jacques Desmazières

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut
    Merci Jacques (bis lol)!

    En me connectant à ma base AS400 dans DbVisualizer, voila ce qui est affiché comme "connecion message" :
    DB2 UDB for AS/400
    05.03.0000 V5R3m0
    AS/400 Toolbox for Java JDBC Driver
    5.0
    C'est donc bien du DB2 :-) Cela convient-il bien aux paramètres que tu m'as donné ?

    Merci !!

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut
    Je ne m'en sors pas dans la configuration des datasources ...
    Je pensais alors fonctionner comme cela :

    - Garder le datasource existant qui fonctionne bien pour la base Informix accédée en lecture/ecriture tout le temps;
    - Se connecter temporairement sans DataSource aux bases DB2 et SQLServer accédées en lecture seulement à un seul endroit de l'appli, par le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    try {
    String url = "jdbc://localhost/dbessai";
    Connection conn =
    DriverManager.getConnection(url, "user", "password");
     
    ... utilisation de la base ...
    }
    catch (SQLException E) {
    System.err.println(E.getMessage());
    }
    Qu'en pensez-vous ? Est-ce propre ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par babylone7
    C'est donc bien du DB2 :-) Cela convient-il bien aux paramètres que tu m'as donné ?
    Tout à fait, mais le monde AS400 est un monde à part donc courage

    Sinon oui il est toujours possible d'accéder directement à la base de données via JDBC, mais les inconvénients sont les suivants
    - impossible de modifier les paramètres d'accès à la base de données depuis la console d'administration
    - il faut définir des données sensibles (password) dans une zone pas forcément sécurisée (fichier de propriété, code !)
    - on ne bénéficie pas automatiquement des services des datasources (pools de connexion, monitoring, ...)

    Donc c'est une solution qui est envisageable pour un prototype, mais peu recommandé dans le cas d'une application en production.

    Jacques Desmazières

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Je n'ai pas de base DB2 AS400 sous la main, donc je n'ai pas pu faire le test de création de datasource.

    Par contre j'ai créé un datasource pour SQLServer sur un serveur Websphere 6 Express (je ne sais pas quelle version tu utilises ?) et cela fonctionne bien, avec le driver SQLServer embarqué dans Websphere.

    Quel est ton problème lors de la création ?

    Jacques Desmazières

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut
    Ci joint la copie ecran des paramètres... Je suis sur un WAS 5.0. Je ne vois pas où on parametre les login et password ..

    Dans le code j'ai une méthode getDataSource() dans une classe DataSourceInitialzer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public static DataSource getDataSource() throws NamingException{
    	if (null == dataSource) {
    	dataSource = (DataSource) ContextRessourceGetter.lookup("jdbc/sqlserver");
    	}		
    	return dataSource;	
    }
    que j'appelle comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataSource dataSource = DataSourceInitializer.getDataSource();
    Connection connection = dataSource.getConnection();
    puis je lance ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pstmt = connection.prepareStatement("SELECT * FROM TABLE");
    rs = pstmt.executeQuery();
    Forcément, sans login ni password ça ne peut pas marcher...

    Le dataSource Informix est initialisé une fois dans cette classe DataSourceInitialzer.java, du coup, je ne sais pas comment, temporairement en utiliser un autre, au niveau de mon action Struts...

    Merci Jacques, c'est vraiment gentil de ta part !
    Images attachées Images attachées  

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par babylone7
    Ci joint la copie ecran des paramètres... Je suis sur un WAS 5.0. Je ne vois pas où on parametre les login et password ..
    Pour saisir le user/password il faut aller dans Sécurité / ConfigurationJAAS / Données d'authentification J2C
    Tu saisis une nouvelle entrée dans cet écran en la nommant de manière explicite (disons SqlServerJAAS, mais ce n'est qu'un exemple pas forcément bon )

    Ensuite tu reviens sur ton Datasource, et tu renseignes les champs "Alias d'authentification géré par composant" et "Alias d'authentification géré par conteneur" avec le nom de l'entrée JAAS (SqlServerJAAS : tu ne peux pas te tromper c'est une combo-box)

    Si tu n'utilises d'EJB CMP, tu peux décocher "Persistance gérée par conteneur".

    Tu valides, tu enregistre et tu peux alors tester ton datasource à partir de la console (ça évite de lancer l'appli).

    Pour ce qui est de ta méthode d'accès au Datasource, elle fonctionne peut être (je n'ai pas testé) mais elle n'est pas "propre" : tu accèdes directement au datasource. En théorie, pour récupérer un datasource d'un serveur d'application (que ce soit WAS, Weblo, Oracle AS ou même Tomcat) il faut passer par JNDI, et de préférence en utilisant une référence locale (Websphere est le seul me semble-t-il qui t'insulte dans ses traces si tu accède à un datasource sans passer par une référence locale ).

    Pour cela je pense que tu dois pouvoir trouver un tuto sur le site

    Jacques Desmazières

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par Jacques - 06
    Pour saisir le user/password il faut aller dans Sécurité / ConfigurationJAAS / Données d'authentification J2C
    Tu saisis une nouvelle entrée dans cet écran en la nommant de manière explicite (disons SqlServerJAAS, mais ce n'est qu'un exemple pas forcément bon )
    je bloque à nouveau .. au niveau de l'id utilisateur + mot de passe ... (voir image jointe)
    Tu valides, tu enregistre et tu peux alors tester ton datasource à partir de la console (ça évite de lancer l'appli).
    C'est possible ça ??? Genial depuis tout à l'heure je me demande comment faire pour tester sans le code !!!

    Pour ce qui est de ta méthode d'accès au Datasource, elle fonctionne peut être (je n'ai pas testé) mais elle n'est pas "propre" : tu accèdes directement au datasource. En théorie, pour récupérer un datasource d'un serveur d'application (que ce soit WAS, Weblo, Oracle AS ou même Tomcat) il faut passer par JNDI, et de préférence en utilisant une référence locale (Websphere est le seul me semble-t-il qui t'insulte dans ses traces si tu accède à un datasource sans passer par une référence locale ).

    Pour cela je pense que tu dois pouvoir trouver un tuto sur le site
    oki je vais regarder ..
    Images attachées Images attachées  

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut
    Bonjour Jacques !

    Pardonne moi mon silence d'hier, en fait j'ai passé une bonne partie de la journée avec mon chef sur mes fameux Datasources !

    Voici donc un résumé :
    - mes datasources 5.0 étaient incompatibles avec mes servlets 2.3 --> je suis repassée en 4.0 et donc pas besoin de JAAS
    - le tout dernier driver sql server (jar unique) ne fonctionnait pas (il ne trouvait pas la classe (The DataSource implementation class "com.microsoft.jdbcx.sqlserver.SQLServerDataSource" could not be found.), j'ai donc utilisé le driver d'avant (3 jar :msutil.jar, msbase.jar et mssqlserver.jar)
    - concernant l'as400, j'ai du utiliser le driver natif jt400Native.jar, sinon j'avais aussi ce problème de classe introuvable. Et pour obtenir des données lisibles et non de l'EBCDIC, il "suffit" (on a cherché un moment quand même !!!) de mettre le parametre "translateBinary" du datasource à 'true' !

    Voilà, j'ai donc accès à toutes mes bases c cool Maintenant le jeu va etre de jongler entre elles !

    Merci Jacques en tout cas !

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

Discussions similaires

  1. connexion sql server sécurisé
    Par liliprog dans le forum ASP.NET
    Réponses: 21
    Dernier message: 08/06/2005, 20h31
  2. [DEBUTANT] Connexion à SQL Server
    Par jesus144 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2005, 12h38
  3. [C#] Problème de connexion sql server 2000
    Par rabbiwan dans le forum ASP.NET
    Réponses: 8
    Dernier message: 22/12/2004, 16h21
  4. Connexion à SQL Server avec ASP
    Par ayobo dans le forum ASP
    Réponses: 3
    Dernier message: 25/05/2004, 17h06
  5. Connexion SQL Server
    Par Bart51 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/05/2004, 10h49

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