//***********************************************************************************
This is my client code
//************************************************************************************
package com.client;
import javax.naming.*;
import java.rmi.*;
import javax.rmi.*;
import com.headfirst.*;
import javax.ejb.*;
import java.util.*;
import java.io.*;
/**
*
* @author ESTUATE
*/
public class AdviceClient
{
public static void main(
String arg[])
{
try
{
Context ic = new InitialContext();
Object o = ic.lookup("Advisor");
AdviceBeanRemoteHome home = (AdviceBeanRemoteHome)PortableRemoteObject.narrow(o, AdviceBeanRemoteHome.class);
AdviceBeanRemote advisor = home.create();
System.out.println(advisor.getAdvice());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
//***************************************************************************************
ejb-jar.xml
//***************************************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="2.1" 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">
<display-name>EJBModule1</display-name>
<enterprise-beans>
<session>
<display-name>AdviceBeanSB</display-name>
<ejb-name>AdviceBeanBean</ejb-name>
<home>com.headfirst.AdviceBeanRemoteHome</home>
<remote>com.headfirst.AdviceBeanRemote</remote>
<ejb-class>com.headfirst.AdviceBeanBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>AdviceBeanBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
//***************************************************************************************
sun-ejb jar.xml
//***************************************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>AdviceBeanBean</ejb-name>
<jndi-name>Advisor</jndi-name>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
//**************************************************************************************
AdviceBeanBean( Bean logic)
//**************************************************************************************
package com.headfirst;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
*
* @author ESTUATE
*/
public class AdviceBeanBean implements SessionBean {
private SessionContext context;
private String[] adviceStrings = {"anoop","aneesh","srihari","babu"};
// <editor-fold defaultstate="collapsed" desc="EJB infrastructure methods. Click the + sign on the left to edit the code.">;
// TODO Add code to acquire and use other enterprise resources (DataSource, JMS, enterprise bean, Web services)
// TODO Add business methods or web service operations
/**
* @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
*/
public void setSessionContext(SessionContext aContext) {
context = aContext;
System.out.println("setSessionContext");
}
/**
* @see javax.ejb.SessionBean#ejbActivate()
*/
public void ejbActivate() {
System.out.println("ejbActivate");
}
/**
* @see javax.ejb.SessionBean#ejbPassivate()
*/
public void ejbPassivate() {
System.out.println("ejbPassivate");
}
/**
* @see javax.ejb.SessionBean#ejbRemove()
*/
public void ejbRemove() {
System.out.println("ejbRemove");
}
// </editor-fold>;
/**
* See section 7.10.3 of the EJB 2.0 specification
* See section 7.11.3 of the EJB 2.1 specification
*/
public void ejbCreate() {
// TODO implement ejbCreate if necessary, acquire resources
// This method has access to the JNDI context so resource aquisition
// spanning all methods can be performed here such as home interfaces
// and data sources.
System.out.println("ejbCreate");
}
// Add business logic below. (Right-click in editor and choose
// "EJB Methods > Add Business Method" or "Web Service > Add Operation")
public String getAdvice()
{
System.out.println("getAdvice");
int random = (int)(Math.random() * adviceStrings.length);
return adviceStrings[random];
}
}
//*******************************************************************************
The problem i am facing is in netbeans and the problem is as follows
//*******************************************************************************
init:
deps-jar:
compile-single:
run-main:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.client.AdviceClient.main(AdviceClient.java:29)
BUILD SUCCESSFUL (total time: 1 second)
//**************************************************************************************************
Note:- I have created the EJBObject and EJBHome class also, I am not including the code in this mail, but if any one is interested I will send that also, "
PLEASE HELP ME TO SOLVE THIS PROBLEM". Thanks in advance
//***************************************************************************************************