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 :

[JSF-JBPM] Accès à une datasource, bean externe


Sujet :

Wildfly/JBoss Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut [JSF-JBPM] Accès à une datasource, bean externe
    Salut !

    J'utilise la suite jbpm-jpdl-3.2.3, avec un serveur JBoss 4.0.2 je crois (server embeded dans cette suite).

    Bon j'ai transféré ma Base Hsql qui gere le BPM en MySql ... ok...

    En fait je voudrais simplement fournir à mon application l'accès à des beans, EJB 2.1 ou EJB 3.0, ou à une datasource...

    Je veux simplement interagir avec des tables : faire des requêtes dessus et donc y accéder depuis mes applications...

    Déja une manière d'y parvenir serait bien, ou plusieurs selon que se soit un accès direct à une BD via hibernate, ou via des Beans metiers et facade session...

    Le framework utilisé et JSF...

    Est ce que quelqu'un à une piste ? Ou peut me donner un lien relatif a ce sujet ?
    Ou peut me dire dans quel fichier de conf, je dois donner ce lien avec Une bd...

    Face-config.xml ?
    Jboss-web.xml ?
    web.xml ?
    Hibernate.cfg.xml ?

    etc ?

    En supposant que j'ai une BD sur localhost:3306/Test

    -une table Test (type, nom)
    -une table Personne(nom,prenom,adresse)

    Ou je déclare ma datasource ?

    et comment j'y accede dans mes pages JSF Xhtml ?

    merci pour votre aide SVP !

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 73
    Par défaut
    Citation Envoyé par MaxLaMenaX Voir le message
    Salut !

    J'utilise la suite jbpm-jpdl-3.2.3, avec un serveur JBoss 4.0.2 je crois (server embeded dans cette suite).

    Bon j'ai transféré ma Base Hsql qui gere le BPM en MySql ... ok...

    En fait je voudrais simplement fournir à mon application l'accès à des beans, EJB 2.1 ou EJB 3.0, ou à une datasource...

    Je veux simplement interagir avec des tables : faire des requêtes dessus et donc y accéder depuis mes applications...

    Déja une manière d'y parvenir serait bien, ou plusieurs selon que se soit un accès direct à une BD via hibernate, ou via des Beans metiers et facade session...

    Le framework utilisé et JSF...

    Est ce que quelqu'un à une piste ? Ou peut me donner un lien relatif a ce sujet ?
    Ou peut me dire dans quel fichier de conf, je dois donner ce lien avec Une bd...

    Face-config.xml ?
    Jboss-web.xml ?
    web.xml ?
    Hibernate.cfg.xml ?

    etc ?

    En supposant que j'ai une BD sur localhost:3306/Test

    -une table Test (type, nom)
    -une table Personne(nom,prenom,adresse)

    Ou je déclare ma datasource ?

    et comment j'y accede dans mes pages JSF Xhtml ?

    merci pour votre aide SVP !
    Salut
    si tu veux utiliser EJB3 + l'implementation hibernate donc il te suffit

    ETAPE 1 :de creer ton fichier
    perssitance.xml
    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
     
    <?xml version="1.0" ?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    	version="1.0">
    	<persistence-unit name="PersistenceUnit">
    		<jta-data-source>java:MySqlDS</jta-data-source>
    		<properties>
    			<property name="hibernate.show_sql" value="true" />
    			<property name="hibernate.hbm2ddl.auto" value="update" />
    			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
    		</properties>
    	</persistence-unit>
    </persistence>
    ETAPE 2: mettre ton data source sous :
    jboss-x.x.x.GA\server\default\deploy
    voir(jboss-x.x.x.GA\docs\examples\jca)
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!-- $Id: mysql-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ -->
    <!--  Datasource config for MySQL using 3.0.9 available from:
    http://www.mysql.com/downloads/api-jdbc-stable.html
    -->
     
    <datasources>
      <local-tx-datasource>
        <jndi-name>MySqlDS</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/Nomdelabase</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>username</user-name>
        <password>password</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
        <!-- should only be used on drivers after 3.22.1 with "ping" support
        <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
        -->
        <!-- sql to call when connection is created
        <new-connection-sql>some arbitrary sql</new-connection-sql>
          -->
        <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
          -->
     
        <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
        <metadata>
           <type-mapping>mySQL</type-mapping>
        </metadata>
      </local-tx-datasource>
    </datasources>
    NB:ne pas oublier de mettre ton connecteur sous:
    jboss-x.x.x.GA\server\default\lib

    ETAPE 3: creer les entités + session bean(DAO)
    EJB3 ça te permet de faciliter énormément votre travail (cas d'une base existant)

    exemple d'un entité:
    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
     
     
    import java.io.Serializable;
     
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.Lob;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToOne;
     
    /**
     * Cette classe représente le Media associer a une reference de TREF.
     * 
     * @author isfelly
     * @see Reference
     * @see Typemedia
     */
    @Entity
    public class Media implements Serializable {
    	@Id
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	private int nomedia;
     
     
     
    	@OneToOne(fetch = FetchType.EAGER)
    	@JoinColumn(name = "typemedia_fk", nullable = false)
    	private Typemedia typemedia;
     
     
    	@ManyToOne(fetch = FetchType.EAGER)
    	@JoinColumn(name = "reference_fk", nullable = false)
    	private Reference reference;
     
     
    	private String contenttype;
     
     
     
    	private static final long serialVersionUID = 1L;
     
    	public Media() {
    		super();
    	}
     
    	public int getNomedia() {
    		return this.nomedia;
    	}
     
    	public void setNomedia(int nomedia) {
    		this.nomedia = nomedia;
    	}
     
     
     
     
     
    	public Reference getReference() {
    		return reference;
    	}
     
    	public void setReference(Reference reference) {
    		this.reference = reference;
    	}
     
     
     
    public Typemedia getTypemedia() {
    		return typemedia;
    	}
     
    	public void setTypemedia(Typemedia typemedia) {
    		this.typemedia = typemedia;
    	}
     
     
     
    	public String getContenttype() {
    		return contenttype;
    	}
     
    	public void setContenttype(String contenttype) {
    		this.contenttype = contenttype;
    	}
     
     
    }

    Une fois que vous avez bien préparer ta couche metier ...tu peu ensuite attaqué la partie JSF(couche présentation) (view jsp Baking bean ..ect )

    en tous cas il faut voir un bon tuto pour ca
    bonne chance

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    Salut, et merci d'avoir pris du temps pour me répondre !

    Je vais essayer de faire comme tu me l'a dit.
    Et je feedback !

    Marchi ! !

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    Resalut !

    Bon en fait j'ai réussi à migrer mon application de Jboss4.0.2 à un Jboss 5.0 histoire de pouvoir utiliser les EJB3.0, que je maitrise plus que les 2.1 ...

    Je vais te poser une autre question, je sais pas si tu pourras répondre:

    Imaginons que j'ai une BD existante avec des ID de types :

    -12354.1 (Nouveau produit cree après le le produit d'ID 12353.*)
    -12354.2 (declinaison du produit precedent)
    -12355.1 (nouveau produit)

    Etc ...

    Car actuellement, jk'ai toujours utilisé ca pour les ID :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int nomedia;
    Et donc les ID sont générés depuis 1 à 2, 3, 4 ... N ... etc

    En fait peut ont choisir une borne de depart ? ma base existante ayant le dernier produit d'id 12345, je voudrais que le prochain produit aie l'ID 12346 ?

    et avec les declinaison de type 12346.1, 12346.2...

    Je suppose qu'il faut utiliser un Id de type String ?

    En gros est ce qu'on peut utiliser un generateur d'id perso, et comment ?

    Merci !

    Si j'ai pas été très clair hesitez pas a me demander de reformuler !

    Salut !

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    RE salut,


    J'utilise Jboss 5.0 AS enfin j'ai testée plusieurs versions, donc j'ai une marge de liberté sur les versions si besoin est.

    J'utilise avec ca un moteur de BPM Business Process Management, en gros un workflow qui permet d'orchestrer les processus metier ... la suite jbpm-jpdl-3.2.3

    Et j'utilise JSF ...1.2

    J'utilise EJB3.0 :
    J'ai créé mes beans metiers Entity, pour chaque Table de la BD existante...

    J'ai créé une facade CRUD (CREATE, READ, UPDATE, DELETE) qui permet de faire ces operations sur chacunes des tables, ou entités ...



    Quand j'utilisais JSP ET MVC, je faisais simplement dans ma servlet Controller un

    @EJB
    MaSessionFacade session;

    et puis avec session, je pouvais appeller toutes les fonctions déclarées dans celle ci :
    session.createPerson(name, lastname, adress, price(oui les gens ont rarement de prix, mais bon ...) ) ...

    et puis il me suffisait d'afficher la reponse via AJax dans une JSP ...


    PAR CONTRE EN JSF on fait comment ?

    Le bean session facade, il sert a rien ?

    Les manageBean, j'ai du mal a comprendre ? (c'est pour des valeurs statiques ?)

    Quelqu'un peut il m'aider silvouplait ?

Discussions similaires

  1. [EJB3] Problème d'accès à une datasource
    Par evenisse dans le forum Java EE
    Réponses: 1
    Dernier message: 27/02/2008, 14h08
  2. Réponses: 2
    Dernier message: 10/12/2007, 22h02
  3. Réponses: 5
    Dernier message: 16/07/2007, 10h00
  4. [JSF] Récupération d'une valeur d'un bean
    Par mymyma dans le forum JSF
    Réponses: 1
    Dernier message: 21/06/2006, 10h15
  5. Accés à une dll externe
    Par syrio dans le forum C++
    Réponses: 5
    Dernier message: 07/04/2006, 23h23

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