"JNDI name" not bound
rrawasi Nov 8, 2005 11:35 AMI develope a simple EJB it work fine with sun application server now I deploy it on jboss but I get a JNDI name not bound error.
I also add all these file to classpath when I want to compile my client:
jnp-client.jar,jnpserver.jar,jboss-client.jar,jboss-common.jar
plus my ejb.jar file that created from following ant script:
<project name="EJBJBOSS" default="ejbjar">
<property file="build.properties"/>
<echo message="classes = ${build.classes.dir}"/>
<target name="init" >
<mkdir dir="classes"/>
</target>
<target name="compile" depends="init">
<javac destdir="${build.classes.dir}"
srcdir="${build.src.dir}">
<classpath>
<pathelement location="${compile.classpath}"/>
</classpath>
<include name="**/*.java"/>
</javac>
</target>
<target name="ejbjar" depends="compile">
<jar destfile="${dist.dir}/${ejbjar.name}"
basedir="${build.classes.dir}"
includes="${metainf}/*.xml">
<exclude name="HelloClient.class"/>
</jar>
<echo message="ejb jar destination = ${dist.dir}"/>
</target>
</project>
META-INF folder contain following jboss.xml and ejb-jar.xml:
<?xml version="1.0"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" version="2.1"> <enterprise-beans> <session> <ejb-name>HelloBean</ejb-name> <home>tutorial.interfaces.HelloHome</home> <remote>tutorial.interfaces.Hello</remote> <ejb-class>tutorial.ejb.HelloBean</ejb-class> <session-type>Stateless</session-type> </session> </enterprise-beans> </ejb-jar> <?xml version="1.0"?> <jboss> <enterprise-beans> <session> <ejb-name>HelloBean</ejb-name><!--Matches ejb-jar.xml --> <jndi-name>jboss/HelloBean</jndi-name><!--Matches client code--> </session> </enterprise-beans> </jboss>
and here is my client code:
import javax.naming.*;
import javax.rmi.*;
import tutorial.interfaces.HelloHome;
import tutorial.interfaces.Hello;
public class HelloClient {
public void go() {
try
{
Properties prop = new Properties();
prop.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
prop.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
prop.put("java.naming.provider.url","localhost");
Context ic = new InitialContext(prop);
System.out.println("from client: EJB client Start");
Object ref = ic.lookup("jboss/HelloBean");
System.out.println("JNDI name solved");
tutorial.interfaces.HelloHome home=(HelloHome)PortableRemoteObject.narrow(ref,HelloHome.class);
System.out.println("from client: home already finded");
tutorial.interfaces.Hello sayHello = home.create();
System.out.println(sayHello.helloing());
System.out.println("from client: EJB client End");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args){
new HelloClient().go();
}
}I saw JBOSS service=JNDIView from jmx-console but I don't find my JNDI name
here is my error:
from client: EJB client Start
javax.naming.NameNotFoundException: jboss not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:495)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:503)
at org.jnp.server.NamingServer.getObject(NamingServer.java:509)
at org.jnp.server.NamingServer.lookup(NamingServer.java:253)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:534)
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:528)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:507)
at javax.naming.InitialContext.lookup(Unknown Source)
at tutorial.client.HelloClient.go(HelloClient.java:22)
at tutorial.client.HelloClient.main(HelloClient.java:38)
so please help me it make me tired