I've been trying to release an easy program in EJB3 please some one
tells me where did i do wrong. I've tried to explain all steps with
all details.
First Step:
public interface Hello { public void sayHello(); }
-------------------------------------------------------
Second Step:
import javax.ejb.*;
@Stateless
@Remote(Hello.class)
public class HelloBean implements Hello {
public void sayHello() {
System.out.println("Hello");
}
}
--------------------------------------------------------
Third Step:
I created META-INF folder behind my two objects that i've created + MANIFEST.MF
--------------------------------------------------------
Fourth Step:
/META-INF/Ejb-jar.xml file
<?xml version="1.0" encoding="UTF-8" ?>
<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_3_0.xsd"
version="3.0">
<enterprise-beans>
</enterprise-beans>
</ejb-jar>
--------------------------------------------------------------------------------
Fifth Step:
/META-INF/jboss.xml file
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<jndi-name>HelloJndi</jndi-name>
</session>
</enterprise-beans>
</jboss>
--------------------------------------------------------------------------------\
---
Sixth Step:
I compiled my java files without any exception or error and after that
i created my component and i named it test.jar without any exception
or error message too.
--------------------------------------------------------------------------------\
---
Seventh Step
i copied my component (test.jar) in to my ejb container for deploying.
/usr/share/jboss-4.2.1.GA/server/default/deploy/ejb3.deployer/test.jar----------\
--------->
my component path
i started my Web Server and my component was deployed without any
exception or any error messages.
--------------------------------------------------------------------------------\
-------------------------------------------------
Eighth Setpe:
i think my problem is here, My JNDI file and handling my jboss properties.
import javax.naming.*;
import java.util.Properties;
public class HelloJndi {
public static void main(String[] m) throws Exception {
Properties prop = new Properties();
prop.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContext\
Factory");
prop.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interf\
aces");
prop.setProperty("java.naming.provider.url","localhost:");
Context cnt = new InitialContext(prop);
Hello hello = (Hello) cnt.lookup("Hello");
hell.sayHello();
}
}
this file compiled without any exception or any error messages. BUT
when i run this file i encounter
Exception in thread "main" javax.naming.NoInitialContextException:
Cannot instantiate class: org.jnp.interfaces.NamingContextFactory
[Root exception is java.lang.ClassNotFoundException:
org.jnp.interfaces.NamingContextFactory]
at
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:657)
at
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at HelloJndi.main(HelloJndi.java:12)
Caused by: java.lang.ClassNotFoundException:
org.jnp.interfaces.NamingContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46)
at
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:654)
... 4 more