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

Java EE Discussion :

[Stratégie] Faire communiquer une application J2EE avec OpenErp


Sujet :

Java EE

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut [Stratégie] Faire communiquer une application J2EE avec OpenErp
    Bonjour je suis actuellement en stage et je dois développer une application qui doit me permettre de faire communiquer une application J2EE et une application OpenErp(ancien tiny Erp).
    J aurai besoin du code pour etablir la connexion entre les deux application je bloque a ce niveau si vous avez des idees de comment on doit si prendre
    Merci

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    1) Comme expliqué dans la charte du forum, on donne peut donner des pistes, aider à comprendre ce qui ne va pas dans un code... mais on ne fait pas le travail à ta place et on ne te fournira pas de code tout fait.

    2) Dans ton cas précis, malheureusement, Open ERP ne dispose pas à ma connaissance d'une API de webservices pour la communication (cf. par exemple cet article http://www.smile.fr/actualites/nos-a...gento-open-erp où la société explique avoir dû redévelopper un connecteur côté Open ERP).

    Pour mettre en place une communication avec Open ERP, tu as donc plusieurs solutions :
    - la première, très moche, consiste à te connecter directement à la base de données d'Open ERP. Ca peut passer pour de la consultation, mais si tu commences à vouloir écrire, le comportement est difficilement prévisible (en particulier si Open ERP utilise un cache de données de type Hibernate pour gagner en performances)
    - la première, beaucoup plus propre, est de développer un connecteur côté Open ERP. La plus propre (mais pas forcément le plus simple) étant à mon avis de mettre en place une couche de webservices que tu appellerais depuis ton application J2EE.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    J entend bien, et j attend pas que quelqu'un un fasse le code à ma place lol
    je voulais juste savoir si il existait un truc comme (mysql connect en php...) mais bon ne me reposant esperant que quelqu'un fasse le boulot
    Je suis parti sur une solution xmlrpc cependant je recontre deux difficulté:
    -J ai probleme avec les import(ceux en gras et italique)
    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
    	
    import java.net.URL;
    import java.util.Vector;
    import org.apache.log4j.Logger;
    
    
    import java.io.*;
    
    import java.util.Enumeration;
    import java.util.Hashtable;
    import java.util.HashSet;
    import java.util.Iterator;
    
    
    import org.apache.xmlrpc.client.XmlRpcClient;
    import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
    import org.apache.xmlrpc.client.util.ClientFactory;
     
    import java.util.*; 
    import java.text.*;
    
    public class ConnectToErp {
    	static Logger log = Logger.getLogger(ConnectToErp.class);
    
    	public int Connect(String host, int port, String Erpbd, String login, String password)
    	{
    		
    		host = "127.0.0.1";
    		Erpbd = "OpenErp";
    		login = "postgres";
    		password = "postgres";
    		
    	
    		Object[] params = new Object[] {Erpbd,login,password};
    	
    		
    
    			setServer(host, port);
    
    			if (Erpbd != null)
    			{
    				log.info("Logging to " + Erpbd + " with user " + login + "("+ password +")");
    				params = new Object[] {Erpbd,login,password};
    				Object id = xmlrpcLogin.execute("login", params);
    				if (id instanceof Integer)
    				{
    					return (Integer)id;
    				}
    				else
    				{
    					log.info("Logging Cast Error : id is " + id.getClass() + " value =" + id); 
    					return -5;
    				}
    			}
    
    			return 503;
    
    	}
    
    private void setServer(String host, int port)
    	{
    		
    		
    		if (port<=0) port = 8080;  //port par defaut
    		if (host == null || host.length()==0) host = "127.0.0.1"; //host par defaut
    
    		if (xmlrpcLogin.getConfig() != null && 
    				(host.equalsIgnoreCase(host)
    						|| port == port)) return;
    
    			XmlRpcClientConfigImpl xmlrpcConfigLogin = new XmlRpcClientConfigImpl();
    			xmlrpcConfigLogin.setEnabledForExtensions(true);
    			xmlrpcConfigLogin.setServerURL(new URL("http",host,port,"/xmlrpc/common"));
    
    			xmlrpcLogin.setConfig(xmlrpcConfigLogin);
    
    			xmlrpcConfigLogin = new XmlRpcClientConfigImpl();
    			xmlrpcConfigLogin.setEnabledForExtensions(true);
    			xmlrpcConfigLogin.setServerURL(new URL("http",host,port,"/xmlrpc/db"));
    			xmlrpcDb.setConfig(xmlrpcConfigLogin);
    }
    }
    -J aimerai savoir si cela peut fonctionne malgre le fait que ce soit du python(openerp)
    Si quelqu un sait ou obtenir les librairie :
    -xercesImpl.jar
    - jaxrpc.jar
    - xml-apis.jar
    - soap.jar
    ca m aiderai
    merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    wouah le desert lol

    Personne n aurai une idee pour m aider?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    Il y a t il des gens qui sont dans le meme cas que moi voir dans un cas similaire?
    Juste pour savoir si mon probleme est atypique?
    Si vous pouvez pas repondre à la premiere
    merci de bien vouloir repondre a celle la

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    J avance plus ou moins avec mon projet qui ne semble inspire personne sur le forum
    Mais bon je pense avoir trouve un moyen en utilisant xmlrpc

    XmlRpcClient client = new XmlRpcClient( "http://xxxxxxxx.com/" );
    je calle cependant tjrs pour manipuler les donnée.....
    donc si quelqu un à une idee
    Merci

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    En fait moi aussi j'ai à faire qlq chose pareilles Je dois implèmenter un module dans OpenERP qui doit par la suite interroger un connecteur ecrit en Java (que je doit aussi developper). Et c'est un peu flou pour moi aussi la méthode xmlrpc

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    Bienvenu au club
    Il semblerai que je sois pas le seul a me casser les dents avec cette histoire.
    Mahis tu es à quel niveau dans ton projet?
    Je me demandais si il n y avait que la methode xmlrpc mais il bien que se soit la seul
    Donc il va falloir que l on continu de chercher.
    bon on se tient au courant.

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut,
    Pareil, je suis stagiaire, est mon projet est de connecter Openerp et une appli J2EE pour synchroniser des données, le tout en utilisant XmlRpc.
    Donc je me renseigne sur les techno pour l'instant. Je vous tient au jus dès que j'ai éclairci mon cheminement!

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Pour information, j'ai trouvé dans la doc d'openerp le moyen de lister les bases et de se logger en xml-rpc.

    http://doc.openerp.com/developer/6_2...ces/index.html

    La version python marche très bien, mais pour le java je cherche toujours comment utiliser les fonctions search, read et update.

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Citation Envoyé par p2w.walas Voir le message
    J entend bien, et j attend pas que quelqu'un un fasse le code à ma place lol
    je voulais juste savoir si il existait un truc comme (mysql connect en php...) mais bon ne me reposant esperant que quelqu'un fasse le boulot
    Je suis parti sur une solution xmlrpc cependant je recontre deux difficulté:
    -J ai probleme avec les import(ceux en gras et italique)
    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
    	
    import java.net.URL;
    import java.util.Vector;
    import org.apache.log4j.Logger;
    
    
    import java.io.*;
    
    import java.util.Enumeration;
    import java.util.Hashtable;
    import java.util.HashSet;
    import java.util.Iterator;
    
    
    import org.apache.xmlrpc.client.XmlRpcClient;
    import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
    import org.apache.xmlrpc.client.util.ClientFactory;
     
    import java.util.*; 
    import java.text.*;
    
    public class ConnectToErp {
    	static Logger log = Logger.getLogger(ConnectToErp.class);
    
    	public int Connect(String host, int port, String Erpbd, String login, String password)
    	{
    		
    		host = "127.0.0.1";
    		Erpbd = "OpenErp";
    		login = "postgres";
    		password = "postgres";
    		
    	
    		Object[] params = new Object[] {Erpbd,login,password};
    	
    		
    
    			setServer(host, port);
    
    			if (Erpbd != null)
    			{
    				log.info("Logging to " + Erpbd + " with user " + login + "("+ password +")");
    				params = new Object[] {Erpbd,login,password};
    				Object id = xmlrpcLogin.execute("login", params);
    				if (id instanceof Integer)
    				{
    					return (Integer)id;
    				}
    				else
    				{
    					log.info("Logging Cast Error : id is " + id.getClass() + " value =" + id); 
    					return -5;
    				}
    			}
    
    			return 503;
    
    	}
    
    private void setServer(String host, int port)
    	{
    		
    		
    		if (port<=0) port = 8080;  //port par defaut
    		if (host == null || host.length()==0) host = "127.0.0.1"; //host par defaut
    
    		if (xmlrpcLogin.getConfig() != null && 
    				(host.equalsIgnoreCase(host)
    						|| port == port)) return;
    
    			XmlRpcClientConfigImpl xmlrpcConfigLogin = new XmlRpcClientConfigImpl();
    			xmlrpcConfigLogin.setEnabledForExtensions(true);
    			xmlrpcConfigLogin.setServerURL(new URL("http",host,port,"/xmlrpc/common"));
    
    			xmlrpcLogin.setConfig(xmlrpcConfigLogin);
    
    			xmlrpcConfigLogin = new XmlRpcClientConfigImpl();
    			xmlrpcConfigLogin.setEnabledForExtensions(true);
    			xmlrpcConfigLogin.setServerURL(new URL("http",host,port,"/xmlrpc/db"));
    			xmlrpcDb.setConfig(xmlrpcConfigLogin);
    }
    }
    -J aimerai savoir si cela peut fonctionne malgre le fait que ce soit du python(openerp)
    Si quelqu un sait ou obtenir les librairie :
    -xercesImpl.jar
    - jaxrpc.jar
    - xml-apis.jar
    - soap.jar
    ca m aiderai
    merci
    http://www.findjar.com/
    Bon courage

  12. #12
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Je continue de poster pour ceux que ça pourrait interresser.
    En fait, les outils XML-RPC on l'air plus complets en python que en Java.
    Les paramètres transmis par xmlrpc à l'aide de code java ne sont pas typés.
    Vu que la doc ne donne pas l'implémentation de toute les fonctions en java, j'ai un bidouillé pour faire une simple requete de recherche sur openerp.
    Voici un bout de code qui marche sur mon serveur Openerp 5

    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
     
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.Vector;
     
    import org.apache.commons.lang.StringUtils;
    import org.apache.xmlrpc.XmlRpcException;
    import org.apache.xmlrpc.client.XmlRpcClient;
    import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
     
     
    public static Vector<String> getProduct(Integer uid, String host, int port, String db_name, String password) throws Exception
    	{
    		  try {
     
    			// Setting up 
    			XmlRpcClientConfigImpl pconfig = new XmlRpcClientConfigImpl();
    			URL url = new URL("http",host,port,"/xmlrpc/object");
    			pconfig.setServerURL(url);
    			m_XmlRpcClient.setConfig(pconfig);
     
    			Vector<String> res = new Vector<String>();  
    			Object[] search_detail = new Object[]{"id", "=", "1"};
    			Object[] search = new Object[]{search_detail};
    			Object[] params = new Object[] {db_name, uid, password, "product.product", "search", search};
     
    			System.out.println("Trying search on " + url);
     
    			// Getting results back
    			Object result =	m_XmlRpcClient.execute("execute", params);
    			Object[] a = (Object[]) result;
     
    			for (int i = 0; i < a.length; i++) 
    				if ((a[i] instanceof String) || (a[i] instanceof Integer))
    			    	res.add((a[i]).toString());
     
    			return res;
    		  }
     
    		  catch (XmlRpcException e) {
    			  throw e;
    		  }
    		  catch (Exception e)
    		  {
    			  throw e;
    		  }
    	}
    Il faut pour que cette fonction marche, s'être d'abord authentifier à l'aide de la fonction login dispo ici (http://doc.openerp.com/developer/6_2...ces/index.html)

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Re,

    Bon après avoir pas mal bidouillé, j'ai reussi à developper un connecteur assez propre, qui me permet d'utiliser de manière distante les fonctions suivantes:
    -read
    -search
    -write (équivalent de update)
    -create
    -browse

    Ces methodes sont décrites sur le manuel de TinyERP dispo ici
    http://www.scribd.com/doc/13774359/T...mentation-book

    Voila, maintenant, je galère un peu pour récupérer les exceptions qui remontent du serveur afin d'afiner ma gestion d'erreur. J'ai l'impression que le lien entre la librairie XML-RPC d'apache et le serveur python n'est pas complètement fonctionnel.

    Voila pour moi,

    freebyte

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    pas mal le connecteur je test et je tiens le forum au courant ton connecteur m apporte quelques element supplementaire pour le connecteur que je developpe personnelement des que le mien sera operationnel je ferai un poste

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut,
    on fait j ai utilisé le code qui existe dans le site de Openerop 5 pour l'authentification mais il me genère l 'erreur suvante :
    Exception in thread "main" org.apache.xmlrpc.client.XmlRpcClientException: Failed to read server response: Connection reset.
    voila le code de mon programme si vous avez une suggestion pour resoudre le probleme.
    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
     
    import java.net.URL;
    import java.util.Hashtable;
    import java.util.Vector;
    import org.apache.log4j.Logger;
    import org.apache.xmlrpc.XmlRpcException;
    import org.apache.xmlrpc.client.XmlRpcClient;
    import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
    import org.apache.xmlrpc.client.XmlRpcLiteHttpTransportFactory;
     
    public class connexion {
     
    	public static void main( String args[] ) throws Exception {
    	    Logger logger = Logger.getLogger(connexion.class.getName());
    		XmlRpcClient client = new XmlRpcClient();
    		XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
            config.setEnabledForExtensions(true);
    	try{
    		    config.setServerURL(new URL("http://localhost:8080/xmlrpc/common")); 
    		    client.setTransportFactory(new XmlRpcLiteHttpTransportFactory(client));
     
    		    client.setConfig(config);
     
    		    System.out.println("connexion etablie");
     
           /* }
    		catch (Exception e) {
    			  System.out.println("Erreur de connexion");
    	                    }
    		*/
     
    			 //Authentification:
    			Object[] params = new Object[] {"mst","openpg","openpgpwd"};
    		    Object id= client.execute("login", params);
     
    		    if (id!=null)
    	      	     { System.out.println("connexion reussie");
    		    System.out.print(id);
    	      	     }
    	//Get produit
    	Vector<String> res = new Vector<String>();  
    		Object[] search_detail = new Object[]{"id", "=", "1"};
    		Object[] search = new Object[]{search_detail};
    		Object[] param = new Object[] {"mst",1,"admin", "product.product", "search", search};
    		Object recu =client.execute("execute", param);
    		Object[] a = (Object[]) recu;
    	   	for (int i = 0; i < a.length; i++) 
    			if ((a[i] instanceof String) || (a[i] instanceof Integer))
    		    	res.add((a[i]).toString());
    		   System.out.print(res); 
    		          }
     
     
    	     catch (XmlRpcException e) {
    			   logger.warn("Erreur de XmlException lors de la connexion avec OpenERP: ",e);
    		       System.out.println("echec d'authentification"); 
    			                       } 
     
     
           }	 
    }
    Merci d'avance

Discussions similaires

  1. Faire communiquer une application GWT avec une applet Java ?
    Par Beginner. dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 08/02/2013, 21h16
  2. [Débutant] Faire communiquer une master page avec une autre application web
    Par Marv27600 dans le forum ASP.NET
    Réponses: 16
    Dernier message: 20/06/2012, 10h24
  3. Faire communiquer une application lourde avec un serveur Web
    Par oneagaindoguys dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 15/08/2011, 11h36
  4. J aimerai faire communiquer une application J2EE avec OpenErp(TinyErp)
    Par p2w.walas dans le forum Odoo (ex-OpenERP)
    Réponses: 3
    Dernier message: 20/03/2009, 17h54
  5. faire communiquer deux applications j2EE au sein de jBoss
    Par zizoux5 dans le forum Wildfly/JBoss
    Réponses: 9
    Dernier message: 18/04/2007, 21h57

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