Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/02/2008, 16h18   #1
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Par défaut Appel d'un programme JAVA depuis une procedure PL/SQL

Bonjour,

j'ai un programme écrit en JAVA que j'appel depuis Sql Plus de la manière suivante:

Code :
1
2
 
host java -mx512m com.socgen.prism.constructProfilPoolPME.ConstructPoolPME 192.16.238.149 1521 $AliasSid $UsrOra
je souhaiterais appeler ce programme directement depuis une procédure stockée PL/SQL définie dans un package. Cela est-il possible? si oui comment?
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 17h08   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Probablement que vous avez besoin d'utiliser plutôt des procédures externe qui peuvent être écrites en Java. Une autre solution peut être dévelopée en utilisant DBMS_PIPE.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 17h35   #3
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
en fait ma procédure PL/SQL est executée dans SQl Plus.
Si j'appelle mon code JAVA avec un "HOST" depuis cette même proc appelée depuis SQLplus est-ce que ça marchera ou pas?
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2008, 00h55   #4
Membre actif
 
Inscription : février 2007
Messages : 167
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 167
Points : 161
Points : 161
Par défaut Appel Java stocké depuis Plsql

Bonjour,

Placer un ordre host dans du PlSql me paraît impossible.
Une possibilité si le traitement peut être interne à la base est de déclarer le code java en tant que procédure stockée.
Code :
1
2
3
4
5
6
 
CREATE OR REPLACE AND compile java source named MonJavaSource AS
package MonJava;
...
public static int MaFonction(float MonParam) {
...
Puis de l'invoquer au travers d'un package faisant référence à ses routines :

Code :
1
2
3
4
5
6
7
8
 
CREATE OR REPLACE Package Body pl_java IS
 
  --- Permet d'attaquer les procédures JAVA de la base.
 
  FUNCTION java_fonction (p_xmf_id Float) RETURN Number AS
    LANGUAGE Java Name 'MonJava.MonJavaSource .MaFonction(float) return int';
...
Ensuite on fait appel en PlSql au package pl_java.
Sinon en effet les procédures externes.

Pozzo
Pozzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 14h06   #5
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Je pense que je vais opter pour les procedures externes car la classe JAVA que je dois appeler doit ausi être appelée pour une autre application.

Par contre qq'un peut-il me présenter le principe pour appeler une procédure externe en JAVA? Si je reprend ce qu'il ya dans la doc Oracle la démarche serait la suivante:
- création d'un DIRECTORY qui indiquerait où se trouverait la classe à invoquer
- Créer une classe avec la commande CREATE JAVA CLASS

mais après? comment appeler la classe depuis mon code PL/SQL?
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 14h49   #6
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
De plus je ne souhaiterais pas accéder à un fichier .class mais à un fichier .jar
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h05   #7
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
voilà ce que j'essai de faire:

Code :
1
2
3
4
 
CREATE DIRECTORY Bfile_dir AS '/dbo_data/prism_v1/java/ProfilEngagementPools'
 
CREATE JAVA CLASS USING BFILE (Bfile_dir, 'ConstituProfilEngagement.jar')
J'obtiens l'erreur suivante:
Code :
ORA-29509: définition de classe binaire Java incorrecte
comment faire alors pour appeler en PL/SQL une proc JAVA qui se trouve dans un .JAR ?
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h38   #8
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Il y a pas des informations ici. A ce que je comprends tu doit charger ton fichier jar dans la base des données.
Mon conseil est de commencer par un petit exemple qui fonctionne (donc un fichier class) et ensuite developper ta solution de production.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h03   #9
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
nan je ne veux pas charger le fichier jar dans la base de données, je veux appeler de manière externe une class qui se trouve dans le .JAR
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h26.


 
 
 
 
Partenaires

Hébergement Web