Sending an Object from client (Swing) to Sever Remote (EJB3)
babak_azarmi Oct 22, 2008 4:59 AMHello guys i've got a problem in sending an Object to sever by remote (EJB3) technology framework
take look at my code
in server side
@Remote public interface TestRemote { public void sendObject(Object obj); } @Stateless public class TestBean implements TestRemote { public void sendObject(Object obj) { System.out.println("Object is Coming"); } }
in client side (swing)
public class H implements Serializable { private static final long serialVersionUID = 1L; private int id; public void setId(int id) { this.id = id; } public int getId() { return id; } } public class RunMe { public RunMe() { try { Properties prop = new Properties(); prop.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); prop.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); prop.setProperty("java.naming.provider.url","localhost:1099"); Context ctx = new InitialContext(prop); System.out.println("Step 1"); ClassLoader cl = Thread.currentThread().getContextClassLoader(); Class k = cl.loadClass("client.H"); H h = (H) k.newInstance(); h.setId(44); System.out.println("Step 2"); //Thread.currentThread().getContextClassLoader(). RunMeRemote r = (RunMeRemote) ctx.lookup("RunMe/remote"); r.setObject(h); } catch (Exception e) { System.out.println(e); } } public static void main(String[] st) { new RunMe(); } }
when I run this program i encountered to this exception
Step 1
Step 2
log4j:WARN No appenders could be found for logger (org.jboss.security.SecurityAssociation).
log4j:WARN Please initialize the log4j system properly.
java.lang.RuntimeException: java.lang.ClassNotFoundException: No ClassLoaders found for: client.H (no security manager: RMI class loader disabled)
when i add this code
public class Client { @SuppressWarnings("unchecked") public Client() { try { Properties prop = new Properties(); prop.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); prop.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); prop.setProperty("java.naming.provider.url","localhost:1099"); Context ctx = new InitialContext(prop); if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } System.out.println("Step 1"); ClassLoader cl = Thread.currentThread().getContextClassLoader(); Class k = cl.loadClass("client.H"); H h = (H) k.newInstance(); h.setId(44); System.out.println("Step 2"); //Thread.currentThread().getContextClassLoader(). RunMeRemote r = (RunMeRemote) ctx.lookup("RunMe/remote"); r.setObject(h); } catch (Exception e) { System.out.println(e); } } public static void main(String[] s) { new Client(); } }
another exception is appeared
Step 1
Step 2
log4j:WARN No appenders could be found for logger (org.jnp.interfaces.NamingContext).
log4j:WARN Please initialize the log4j system properly.
javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 and discovery failed with error: java.security.AccessControlException: access denied (java.net.SocketPermission 230.0.0.4 connect,accept,resolve) [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)]]
Mention. when i want to send a String or int or any prmetive java Object my program works good and send the date for sever
but when i want to send an object (Entity Object) the exception is appeared.
tell what should i do to send an Object to sever by remote (EJB3) Technology? thanks so much