mux85
24-03-2009, 23:45
Sto facendo un progetto in JEE per l'università. Non ho mai usato JEE prima e quindi stavo facendo qualche prova. Uso eclipse for JEE developer e JBoss. questo è il piccolo pezzo di codice che ho scritto per il client.
import java.util.Properties;
import com.AgriNet.controlli.*;
import javax.naming.*;
public class Main {
public static Context getInitialContext() throws javax.naming.NamingException {
System.out.println("2");
Properties properties = new Properties();
properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
properties.put("java.naming.provider.url","localhost");
return new javax.naming.InitialContext(properties);
}
public static void main(String[] args) {
try {
System.out.println("1");
Context jndiContext = getInitialContext();
Object ref = jndiContext.lookup("ProvaRemote");
System.out.println("3");
ProvaRemote pr=(ProvaRemote) ref;
System.out.println("4");
pr.prova();
System.out.println("6");
}
catch(Exception e){e.printStackTrace();}
}
}
questo invece è il codice del bean
import javax.ejb.*;
import javax.persistence.*;
import com.AgriNet.entità.*;
import org.jboss.annotation.ejb.RemoteBinding;
@Stateless
@RemoteBinding(jndiBinding="ProvaRemote")
public class ProvaBean implements ProvaRemote{
@PersistenceContext(unitName="agrinet")
private EntityManager manager;
public void prova(){
Cliente cl=new Cliente();
cl.setId(10);
cl.setNome("mario");
manager.persist(cl);
System.out.println("5");
}
}
è questo quello dell'interfaccia remote
import javax.ejb.*;
@Remote
public interface ProvaRemote {
public void prova();
}
ora l'errore che ricevo
javax.naming.NameNotFoundException: ProvaRemote 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:296)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
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:667)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.AgriNet.interfacce.Main.main(Main.java:21)
io non capisco proprio dove sta il problema. qualcuno mi da una mano?
grazie
import java.util.Properties;
import com.AgriNet.controlli.*;
import javax.naming.*;
public class Main {
public static Context getInitialContext() throws javax.naming.NamingException {
System.out.println("2");
Properties properties = new Properties();
properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
properties.put("java.naming.provider.url","localhost");
return new javax.naming.InitialContext(properties);
}
public static void main(String[] args) {
try {
System.out.println("1");
Context jndiContext = getInitialContext();
Object ref = jndiContext.lookup("ProvaRemote");
System.out.println("3");
ProvaRemote pr=(ProvaRemote) ref;
System.out.println("4");
pr.prova();
System.out.println("6");
}
catch(Exception e){e.printStackTrace();}
}
}
questo invece è il codice del bean
import javax.ejb.*;
import javax.persistence.*;
import com.AgriNet.entità.*;
import org.jboss.annotation.ejb.RemoteBinding;
@Stateless
@RemoteBinding(jndiBinding="ProvaRemote")
public class ProvaBean implements ProvaRemote{
@PersistenceContext(unitName="agrinet")
private EntityManager manager;
public void prova(){
Cliente cl=new Cliente();
cl.setId(10);
cl.setNome("mario");
manager.persist(cl);
System.out.println("5");
}
}
è questo quello dell'interfaccia remote
import javax.ejb.*;
@Remote
public interface ProvaRemote {
public void prova();
}
ora l'errore che ricevo
javax.naming.NameNotFoundException: ProvaRemote 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:296)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
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:667)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.AgriNet.interfacce.Main.main(Main.java:21)
io non capisco proprio dove sta il problema. qualcuno mi da una mano?
grazie