Bonjour,
J'ai créer un ProjectEJB, et un client (JavaProject) j'utilise le serveur d'application JBoss,j'ai importé tout les jar nécessaire, et lors de l’exécution du client j'ai cette erreur :
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
|
Context lookup finished
Exception in thread "main" javax.naming.NameNotFoundException: File not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
at org.jnp.server.NamingServer.lookup(NamingServer.java:267)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
at javax.naming.InitialContext.lookup(Unknown Source)
at Client.Client.main(Client.java:26) |
voici mon code du client :
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
| package Client;
import java.io.File;
import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import Pile_File.FileLocal;
import Pile_File.Pile;
import Pile_File.PileLocal;
public class Client {
public static void main(String[] args)throws NamingException {
// TODO Auto-generated method stub
Properties props = System.getProperties();
props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
props.put("java.naming.provider.url", "localhost:1099");
//pour povoir intéroger JNDI (annuaire du serveur
InitialContext context= new InitialContext(props);
System.out.println("Context lookup finished");
FileLocal file=(FileLocal) context.lookup("File/remote");
PileLocal pile=(PileLocal)(context.lookup(Pile.class.getName()));
System.out.println("fd"+file.emfiler(5));
System.out.println("affich");
file.affichage();
}
} |
la ligne d'erreur c'est cette ligne :
FileLocal file=(FileLocal)(context.lookup("File/remote"));
et voici mon ProjectEjb
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
package Pile_File;
import javax.ejb.Local;
import javax.ejb.Remote;
@Remote
public interface FileLocal {
public Object emfiler(Object element);
public Object défiler();
public boolean estVide();
public boolean estPleine();
public void affichage();
public Object queu();
}
package Pile_File;
import java.util.Vector;
import javax.annotation.PostConstruct;
import javax.ejb.Remote;
import javax.ejb.Remove;
import javax.ejb.Stateful;
/**
* Session Bean implementation class File
*/
@Stateful
@Remote ({FileLocal.class})
public class File implements FileLocal {
/**
* Default constructor.
*/
private Vector<Object> file;
public File() {
file = new Vector<Object>(1000);
}
@PostConstruct
public void initialize () {
this.file= null;
file.setSize(0);
}
@Override
public Object emfiler(Object element) {
//ajouter un element
if(file.size()==1000)
System.out.println("file pleine");
file.addElement(element);
return element;
}
@Override
public Object défiler() {
int taille =file.size();
Object element = null;
int queu=0;
if (taille==0)
System.out.println("pile vide");
//récupérer l'element a supprimé
element =file.elementAt(taille-1);
// supprimer l'élement
file.removeElementAt(queu);
return element;
}
@Override
public boolean estVide() {
// TODO Auto-generated method stub
return (file.size() == 0);
}
@Override
public boolean estPleine() {
// TODO Auto-generated method stub
return (file.size()==1000);
}
@Override
public Object queu() {
// TODO Auto-generated method stub
return file.lastElement();
}
@Remove
protected void ramasseMiette() throws Throwable {
file = null;
super.finalize();
}
@Override
public void affichage() {
// TODO Auto-generated method stub
for (int i = file.size(); i >= 0; i--) System.out.println(i);
if(file.isEmpty()) System.out.println("pile vide");
}
} |
Partager