Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
J'ai développé des EJBs (accès aux données) qui sont déployés sur un serveur d'application EJB.
J'aimerais appeler ces EJB dans mon application PowerBuilder (c'est à dire créer des datawindows dont les sources de données sont les EJBs). Est ce que c'est possible ?
A+
-----------------------------------
Noel
Découvrir Madagascar
Hors ligne
Désolé j'utilise PB11 et JBoss AS 4.0.5.GA
A+
--------------------------
Noël
Découvrir Madagascar
Hors ligne
Le lien suivant pointe sur un vieille article qui présente plus la démarche inverse : comment déployer des EJB PB sur un JBoss.
Peut-être qu'en t'en inspirant tu pourras trouver une solution à ton problème (déclaration des variables d'env, path, etc...)
http://pbdj.sys-con.com/read/184903.htm
Hors ligne
Bonjour, il y a tout un chapitre dans l'aide HTML : (c'est un peu le même principe que pour appeler une classe java)
Chapter 29 Building an EJB client
About this chapter
This chapter describes how to build a PowerBuilder client for an Enterprise JavaBeans component running on a J2EE-compliant application server. Reference information for the objects described in this chapter is in the PowerBuilder Extension Reference and in the online Help.
Contents
Topic
About building an EJB client
Adding pbejbclient110.pbx to your application
Generating EJB proxy objects
Creating a Java VM
Connecting to the server
Invoking component methods
Exception handling
Client-managed transactions
Debugging the client
Hors ligne
Salut,
J'ai utilisé l'aide de PB11 comme tu l'as dit ErAsORz.
J'ai effectué les taches suivantes :
J'ai ajouté le pbejbclient110.pbx à mon applicaton
J'ai créé un projet pour la construction du "proxy object"(J'ai utilisé le fichier jar qui sera intégré dans l'applicaiton cliente)
J'ai déployé le projet
J'ai créé une fenetre pou l'interface utilisateur
J'ai instancié le JavaVM comme indiqué dans l'aide
J'ai établi la connexion au serveur
Tous ces processus n'a présenté aucun erreur.
Mais quand j'ai fait un lookup sur l'EJB je reçoit l'erreur suivant :
"Failed to lookup the EJB:mg.aaa.TestHomeA
Need to specify classname in environment or system property, or as applet parameteror in an application resource file java.naming.factory.initial"
Je ne sais pas qu'est ce qui se passe ? Or quand je teste l'EJB sur une simple application java, ca marche.
De plus, je ne comprend pas pourquoi même si le serveur est déconnecté, je n'obtient aucune erreur.
-----------------------------------------
Noel
http://www.jeannoeltours.com
Hors ligne
ça sent un problème sur le CLASSPATH...
tu peux mettre ton code ?
Hors ligne
pour info : JBoss / javax.naming.NoInitialContextException
Hors ligne
Bonjour,
Voila le code.
boolean lb_isdebug string ls_classpath, properties[] ejbconnection conn if not gb_jvm_started then //-- create JAVAVM g_jvm = create javavm //-- The Java package for the EJB ls_classpath = "D:\temp\jboss2;" lb_isdebug = true choose case g_jvm.createjavavm( ls_classpath, lb_isdebug) case 0 gb_jvm_started = true case -1 MessageBox("Error","Failed to load JavaVM") case -2 MessageBox("Error","Failed to load EJBLocator") end choose end if properties[1] = "javax.naming.Context.INITIAL_CONTEXT_FACTORY = org.jnp.interfaces.NamingContextFactory" properties[2] = "javax.naming.Context.PROVIDER_URL=jnp://KKKKKK:1099" properties[3] = "javax.naming.Context.SECURITY_PRINCIPAL=admin" properties[4] = "javax.naming.Context.SECURITY_CREDENTIALS=astrum1" conn = CREATE EJBCONNECTION TRY CONN.connecttoserver( properties) MessageBox("Connection","Connecté") catch ( exception e) MessageBox("exception",e.getmessage()) end try pf_testhome testobj try // testobj = conn.lookup( "pf_testhome", "mg.astrum.ddp.test.businessLayer.interfaces.TestHome","ejb.DDPTEST.business.Test") testobj = conn.lookup( "pf_testhome", "ejb/DDPTEST/business/Test","mg.astrum.ddp.test.businessLayer.interfaces.TestHome") catch ( exception e1) CONN.disconnectserver( ) MessageBox("exception",e1.getmessage()) end try Open ( w_test )
-------------------------------------------------
Noel
Découvrir Madagascar
Hors ligne
Bonjour, à quel niveau s'arrête le code ?
quels sont les msgs au niveau de createjavavm, connecttoserver, lookup ?
les properties ne correspondent pas tout à fait à :
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=jnp://localhost:1099
pour info :
Hors ligne
Bonjour,
J'ai modifié le code comme ci-dessous (au niveau des propriétés).
properties[1] = "java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory" properties[3] = "javax.naming.Context.PROVIDER_URL=jnp://localhost:1099" properties[2] = "java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces "
J'obtiens une nouvelle erreur :
Failed to connect to EJB server. Can not instantiate class : org.jnp.interfaces.NamingContextFactory
Or j'ai déjà ajouté dans le répertoire "D:\temp\jboss2" les fichiers : "jndi.properties" et "jnp-client.jar"
-------------------------------------
Noel
Découvrir Madagascar
Hors ligne
Bonjour,
J'ai trouvé l'erreur.
J'ai modifié le classpath comme suit :
ls_classpath = "D:\temp\jboss2\jboss-j2ee.jar;D:\temp\jboss2\jbossall-client.jar"
Et les chaines de propriétés :
properties[1] = "javax.naming.Context.INITIAL_CONTEXT_FACTORY = org.jnp.interfaces.NamingContextFactory" properties[2] = "javax.naming.Context.PROVIDER_URL=jnp://localhost:1099" properties[3] = "javax.naming.Context.SECURITY_PRINCIPAL=" properties[4] = "javax.naming.Context.SECURITY_CREDENTIALS="
Et ça marche. J'arrive à me connecter au serveur d'application.
Le problème qui est au niveau du lookup.
Mon code pour le lookup est comme suit :
testhome testobj try testobj = conn.lookup( "testhome", "ejb/DDPTEST/business/Test","mg.astrum.ddp.test.businessLayer.interfaces.TestHome") catch ( exception e1) CONN.disconnectserver( ) MessageBox("exception",e1.getmessage()) end try
Et je reçoit l'erreur suivant :
Failed to lookup the EJB : mg.astrum.ddp.test.businessLayer.interfaces.TestHome javax.naming.CommunicationException[Root exception is java.lang.ClassNotFoundException:mg.astrum.ddp.test.businessLayer.interfaces.TestHome(no security manager:RMI class loader disabled)]
Je ne sais pas qu'est ce que ça signifie.
A+
Hors ligne
Pages: 1