| Author |
error while running EJB from java client on JBOSS
|
gagan narula
Greenhorn
Joined: Nov 05, 2006
Posts: 18
|
|
Hi As i am new to EJB i have created a helloworld application in ejb which is working fine when i try to call it from servlet but when i try to invoke the same ejb from java client (i.e from diff jvm) on jboss i got the following error: javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]]] at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1399) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:579) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572) at javax.naming.InitialContext.lookup(InitialContext.java:351) at com.gl.TestClient.main(TestClient.java:39) Caused by: javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]] at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:254) at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1370) ... 4 more Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused] at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:228) ... 5 more Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:519) at java.net.Socket.connect(Socket.java:469) at java.net.Socket.<init>(Socket.java:366) at java.net.Socket.<init>(Socket.java:266) at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:69) at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:62) at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:224) ... 5 more Following is my code: Home Interface: package com.gl; import javax.ejb.CreateException; public interface testHome extends EJBHome { String JNDI_NAME = "testBean"; public test create() throws java.rmi.RemoteException,CreateException; } Remote Interface: package com.gl; import java.rmi.RemoteException; import javax.ejb.EJBObject; public interface test extends EJBObject { public String welcomeMessage() throws RemoteException; } Bean: package com.gl; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class testbean implements SessionBean { public void ejbActivate() throws EJBException, RemoteException { // TODO Auto-generated method stub } public void ejbPassivate() throws EJBException, RemoteException { // TODO Auto-generated method stub } public void ejbRemove() throws EJBException, RemoteException { // TODO Auto-generated method stub } public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException { // TODO Auto-generated method stub } public void ejbCreate(){} public String welcomeMessage(){ return "Welcome to the World of EJB"; } } ejb-jar.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <enterprise-beans> <session> <ejb-name>testBean</ejb-name> <home>com.gl.testHome</home> <remote>com.gl.test</remote> <ejb-class>com.gl.testbean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar> jboss.xml: <?xml version='1.0' ?> <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd"> <jboss> <enterprise-beans> <entity> <ejb-name>testBean</ejb-name> <jndi-name>testBean</jndi-name> </entity> </enterprise-beans> </jboss> Client code: package com.gl; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; public class TestClient { public static void main(String[] args) throws Exception{ try{ /* Properties props=new Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming rg.jnp.interfaces"); props.put(Context.PROVIDER_URL, "jnp://localhost:1099"); */ Properties props = new Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put(Context.PROVIDER_URL, "localhost:1099"); System.out.println("Properties ok"); //env.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.HttpNamingContextFactory"); //env.put(Context.PROVIDER_URL,"http://localhost:8080"); //env.put(Context.SECURITY_PRINCIPAL, ""); //env.put(Context.SECURITY_CREDENTIALS, ""); Context ctx=new InitialContext(props); System.out.println("context ok"); //testHome home = (testHome)ctx.lookup("testBean"); Object obj = ctx.lookup ("testBean"); System.out.println("ojb = " + obj); testHome ejbHome = (testHome)PortableRemoteObject.narrow(obj,testHome.class); test ejbObject = ejbHome.create(); String message = ejbObject.welcomeMessage(); System.out.println("home ok"); System.out.println("remote ok"); System.out.println(message); } catch(Exception e){e.printStackTrace();} } } I am able to successfully deployed my ejb on JBOSS but i m getting above error when i am trying to invoke ejb from java client. I have also added the jar file of ejb in class path of client. kindly suggest me something to solve this issue. Regards Gagan
|
 |
aleem khan
Ranch Hand
Joined: Aug 07, 2008
Posts: 94
|
|
|
I wonder why are you still using EJB 2.0 , go for EJB 3.0 it is more simpler
|
SCJP(1.4), SCWCD, Oracle 9i SQL certified, Oracle PLSQL Developer Certified Associate
|
 |
 |
|
|
subject: error while running EJB from java client on JBOSS
|
|
|