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

Tomcat et TomEE Java Discussion :

[Tomcat][Plusieurs applications WEB] Partage d'objet. [FAQ]


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut [Tomcat][Plusieurs applications WEB] Partage d'objet.
    Bonjour ,

    Voilà , je voudrais savoir s'il est possible de partager des OBJETS entre différentes applications Web sur un même serveur Tomcat.
    Je pensais que les objets étaient créé en fonction du ClassLoader, et que si je mettais une classe dans shared avec des valeurs statiques , mais applications arriveraient à se le partager, mais là ... Je me suis foutu le doigt dans l'oeil jusqu'au coude.
    Je voudrais donc savoir si quelqu'un sait si cela est possible, et si oui comment.
    L'idée, est que je dispose d'un cache déjà existant qui représente pas loin de 500Mo, celui-ci doit être utilisé par différentes applications.
    Donc plutôt que d'augmenter le nombre et de conserver la mémoire, j'avais pensé dans un premier temps à un éventuel partage d'objet.
    Il y a bien sûr d'autres solutions tel JNDI, Web Service ... , mais je préfère éviter çà si je peux, au coeur d'une même JVM , cela sera toujours plus performant.
    Voilà si quelqu'un a une idée ...
    D'avance merci.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    C'est tout a fait possible en bindant tes objets dans le naming et non en scope "session" ou "application" !
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Les binder en naming ? C'est faire du JNDI ? Non ?
    Et cela nécessite un appel particulier. On ne peut pas le faire simplement avec un apport de classe ?
    Sinon as tu un exemple de binding en naming ? Et sinon les objets sont automatiquement bindés en application c'est çà ?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Commence par faire ton bean :

    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
    package com.mycompany;
     
    public class MyBean {
     
      private String foo = "Default Foo";
     
      public String getFoo() {
        return (this.foo);
      }
     
      public void setFoo(String foo) {
        this.foo = foo;
      }
     
      private int bar = 0;
     
      public int getBar() {
        return (this.bar);
      }
     
      public void setBar(int bar) {
        this.bar = bar;
      }
     
     
    }
    Ensuite, dans ton web.xml tu référence le factory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <resource-env-ref>
      <description>
        Object factory for MyBean instances.
      </description>
      <resource-env-ref-name>
        bean/MyBeanFactory
      </resource-env-ref-name>
      <resource-env-ref-type>
        com.mycompany.MyBean
      </resource-env-ref-type>
    </resource-env-ref>
    Dans ton serveur.xml tu bind ton objet au naming :

    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
    <Context ...>
      ...
      <Resource name="bean/MyBeanFactory" auth="Container"
                type="com.mycompany.MyBean"/>
      <ResourceParams name="bean/MyBeanFactory">
        <parameter>
          <name>factory</name>
          <value>org.apache.naming.factory.BeanFactory</value>
        </parameter>
        <parameter>
          <name>bar</name>
          <value>23</value>
        </parameter>
      </ResourceParams>
      ...
    </Context>
    Et là ou tu veux y acceder tu fait comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");
     
    writer.println("foo = " + bean.getFoo() + ", bar = " +
                   bean.getBar());
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    C'est donc bien du JNDI.
    En tout cas merci beaucoup pour l'exemple.
    Il n'y a pas d'autres moyens sinon ?

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    C'est la méthode propre en J2EE
    Je ne vois pas en quoi JNDI te gène

    Tu utilise bien un pool de connexions JNDI, pourquoi ne pas faire ton pool/cache d'objet de la même manière, ils seront dans la même VM
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  7. #7
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Bah en fait pour être honnête , je n'ai pas de pool JNDI , et en plus ce sont de nouvelles applications qui doivent interagir avec les anciennes....
    Enfin , voilà, et c'est dans les anciennes que sont les caches, pas du tout gérer sous forme de Factory.
    Donc si tu vois concrètement le problème.
    Enfin bon sinon je pense que je vais faire çà.
    En plus pour être honnête, j'ai des administrateurs Tomcat qui sont des bras cassés , et là pour changer le server.xml, je crains le pire .

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Je n'ai jamais tester mais tu peut aussi binder tes objets de manière programatique et non déclarative auprès du naming.

    Regarde du coté de Context.bind(name, object) si celà peut t'aider.
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  9. #9
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Ok !!
    Bah en tout cas merci pour toutes ses infos.
    Cela m'a bien aidé.
    Encore merci pour ton aide.
    A charge de revanche.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/11/2011, 18h38
  2. Réponses: 0
    Dernier message: 28/03/2011, 16h51
  3. Réponses: 12
    Dernier message: 26/02/2008, 21h52
  4. [JGUARD] Securisé plusieurs applications Web
    Par h_a_m_a_d_a dans le forum Sécurité
    Réponses: 10
    Dernier message: 12/03/2007, 18h44
  5. Faire une application Web à partir d'objets win32
    Par WebPac dans le forum Delphi .NET
    Réponses: 7
    Dernier message: 02/05/2006, 19h11

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