very slow connection from client to server
blackwolff Feb 25, 2009 8:59 AMHi,
why does the client always needs so much time (about 5-10 seconds) to get a connection to the jboss server? Even if I try to connect to the server the second or third time.
The client runs on a Windows-System, the JBoss-Server on a Linux-System.
If I do the same things with JBoss on Windows all works fine.
public class MyClass { public Object getSession() throws NamingException { Object theObject = MyCache.getInstance().getSessionWithKey(getSessionName()); if(theObject == null) { theObject = getFromJNDI("MyEAR/" + getSessionName" + "/remote"); MyCache.getInstance().setSessionWithKey(getSessionName(), theObject); } return theObject; } private String getSessionName() { return "MySession"; } private Object getFromJNDI(String name) throws NamingException { Context ctx = null; Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader()); try { ctx = getInitialContext(); if (ctx == null) return null; return ctx.lookup(name); } catch (NamingException ne) { throw ne; } finally { try { ctx.close(); } catch (NamingException ne1) {} } } private Context getInitialContext() throws NamingException { try { Properties properties = new Properties(); properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); properties.put(Context.PROVIDER_URL, "jnp://anIpAdress:1099"); return new InitialContext(properties); } catch (NamingException namingexception) { throw namingexception; } } } public class MyCache { private static MyCache inst = null; private HashMap sessionCache = new HashMap(); private MyCache() { super(); } public static MyCache getInstance() { if(inst == null) inst = new MyCache(); return inst; } public Object getSessionWithKey(String aName) { Object sessionObject = (Object)getSessionCache().get(aName); return sessionObject; } public void setSessionWithKey(String aName, Object anObject) { getSessionCache().put(aName, anObject); } public void clear() { setSessionCache(new HashMap()); } public HashMap getSessionCache() { return sessionCache; } public void setSessionCache(HashMap sessionCache) { this.sessionCache = sessionCache; } } public interface MySession { public Collection doSomething(); } @Stateless(mappedName = "MySession", name = "MySession") @Remote(MySession.class) @TransactionAttribute(TransactionAttributeType.REQUIRED) public class MySessionBean implements MySession { @PersistenceContext EntityManager em; public Collection doSomething() { return new ArrayList(); } }