Création archive d'extension bpr avec java?

Fermé
mimina - 26 mai 2008 à 01:33
 mimina - 28 mai 2008 à 16:28
Bonjour à tous,

j'ai une question qui m'intrigue, dans mon projet de composition de Web services, je dois déployer automatquement mes processus écrits en bpel, j'utilise le serveur ActiveBPEL dans tomcat, pour cela je dois créer une archive d'extension bpr qui contients tt les fichiers nécéssaires wsdl, bpel, pdd...
d'habitude je crée cette archive avec la commande dos suivante: jar cf mybpel.bpr *.pdd META-INF bpel wsdl maintenant je dois cérer cette archive automatiquement à partir de java, quelqu'un aurait il une idée là-dessus?
mes sincères remerciements.
A voir également:

7 réponses

sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
26 mai 2008 à 18:41
Mmmm,

Runtime.getRuntime().exec(...) serait une option pour toi (ligne de commande avec le path complet pour l'exécutable jar)?
0
bonjour,

merci pour votre réponse, pourai je avoir plus de p^récision svp et merci.
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
27 mai 2008 à 00:11
Bonsoir,

C'est une façon d'appeler un shell depuis Java... Cf. e.g. ici: https://ydisanto.developpez.com/tutoriels/java/runtime-exec/

On peut passer directement une invocation au binaire jar ou bien on peut créer un xml pour Ant (bien plus flexible par rapport à une invocation direct du jar, et lorsque tu voudras changer quelque chose plus tard il suffira de changer l'xml et ne pas recompiler le programme).

++
0
bonsoir,

merci pour votre réponse, mais moi ce que je veux est de créer une archive jar d'extension bpr à partir d'un dossier contennat plusieurs fichiers. est que ce shell fait cela?
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
27 mai 2008 à 07:24
Par exemple:

Runtime runtime = Runtime.getRuntime();
String[] args = { "monjar.bat" };
final Process process = runtime.exec(args);
...

et dans monjar.bat tu as ta ligne de commande DOS que tu utilises actuellement.

Bon courage,
++
0
Bonjour,

je vous remercie pour l'interet que vous portez à mon sujet.
désolée, je suis débutante en java. je suis en train de tester les serveurs d'exécution de processus métier. celui que j'utilise en ce moment a besoin d'une archive ex: myprocess.bpr qui représente le processus exécutable. au fait, avec la commande DOS j'accède d'abord au dossier qui représente le processus ex: cd c:\myprocess
apres j'utilise la commande "jar" dont j'ai parlé dans mon premier post:"jar cf mybpel.bpr *.pdd META-INF bpel wsdl".
j'ai pas compris l'utilisation de monjar.bat est ce un fichier? j'ai utilisé cela et ça na pas marché:

...
Runtime runtime = Runtime.getRuntime();
final Process process = runtime.exec(new String[] { "jar cf mybpel.bpr *.pdd META-INF bpel wsdl" });
...

j'ai pas su comment faire?
et vraiment désolé et merci bcp
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
27 mai 2008 à 12:16
C'est ok aussi, à condition d'avoir l'exécutable (jar) dans le PATH au moment de l'exécution ou de rajouter l'accès complet devant - d'où l'intérêt de créer un fichier de commande qui contiendra tout ce que tu utilises à présent en ligne de commande:

cd c:\myprocess
jar cf mybpel.bpr ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
resalut,

si j'ai bien compris, je dois créer un fichier "monjar.bat" contenant les lignes de commandes:
cd c:\myprocess
jar cf mybpel.bpr *.pdd META-INF bpel wsdl

puis je le met par exemple dans "c:\monjar.bat" ou dans mon projet eclipse:

dans java:

...
Runtime runtime = Runtime.getRuntime();
String[] args = { "c:\monjar.bat" };
final Process process = runtime.exec(args);
...

c'est ça?
cordialement
0
Bonjour,

merci beaucoup pour votre aide sandul j'ai utilisé le code suivant:

public static void main(String[] args) throws IOException{
String cmd;
cmd = "C:\\monjar.bat > c:\\test.txt";
try {
Runtime r = Runtime.getRuntime();
Process p =r.exec(cmd);
}
catch(Exception e) {
System.out.println("erreur d'execution " + cmd + e.getMessage());
}
}

et ça marche bien!! tel que monjar.bat contient les lignes:
cd c:\myprocess
jar cf mybpel.bpr *.pdd META-INF bpel wsdl

la commande cmd="C:\\monjar.bat" ne marchait pas mais sans erreurs!!!

ça marche c bien mais ça m'arrange pas trop cette méthode car le chemin vers le dossier du processus peut changer meme le nom de l'archive varie "mybpel.bpr"?comment dois je faire pour exécuter deux commandes successivement?

j'ai essayé :
cmd = "cmd cd C:\\Documents and Settings\\imen\\Bureau\\deploiement\\SommeFlow";
cmdd = "jar cf SommeFlow.bpr *.pdd META-INF bpel wsdl";
Runtime r = Runtime.getRuntime();
r.exec(cmd);
r.exec(cmdd);

il me crée le SommeFlow.bpr (vide) mais dans le workspace d'eclipse??

cordialement,
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
28 mai 2008 à 16:09
Hello,

Je ne pense pas que l'enchaînement de tes deux exec ci-dessus puisse marcher. S'il s'agit uniquement d'un simple change directory, regarde l'API, la méthode exec() est surchargée et accepte également un 3ème paramètre avec le répertoire d'exécution.

Supposons que j'ai un test.htm dans C:\tmp et que je veux le copier vers C:\tmp\test2.htm. Regarde le code ci-dessous:

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class RuntimeTrial {

/**
* @param args
*/
public static void main(String[] args) {
try {
// invocation de "cmd" pour utiliser "copy"
String[] cmd = new String[] { "cmd", "/C", "copy", "test.htm", "test2.htm" };

// et on lance la commande depuis C:\tmp (3ème param) :-)
final Process p = Runtime.getRuntime().exec(cmd, null, new File("c:/tmp"));

// Consommation de la sortie standard de l'application externe dans un Thread separe
new Thread() {
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
try {
while ((line = reader.readLine()) != null) {
// Traitement du flux de sortie de l'application si besoin est
System.out.println(line);
}
} finally {
reader.close();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}.start();

// Consommation de la sortie d'erreur de l'application externe dans un Thread separe
new Thread() {
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = "";
try {
while ((line = reader.readLine()) != null) {
// Traitement du flux d'erreur de l'application si besoin est
System.err.println(line);
}
} finally {
reader.close();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}

Bon, tu adapteras le code pour tes besoins (ne pas copier un fichier mais créer un jar...)

++
0
resalut

je vous remercie pour tout,
ça a marché!!
bon courage

cordialement
0