Solved

trying to call an ejb from a servlet-client

Posted on 2002-04-15
4
360 Views
Last Modified: 2013-12-10
sir,

I am just a biginner in weblogic and I am facing a problem here and I think you will provide a nice solution to me .
Environment : J2EE/weblogic 5.1/ejb1.1/servlets/win'2000

I have successfuly deployed a stateless session bean named as "Game" and the jndi name used is "gum" at Weblogic 5.1.
Elements inside the "Game.jar" are :
remote interface-> Game.class
home interface  -> GameHome.class
bean class      -> GameBean.class
xml DD          -> META-INF/ejb-jar.xml

I have maintained the dir. structure as follows :  WEB-INF/lib /Game.jar
WEB-INF/classes/toy/*.class
WEB-INF/classes/toy/META-INF/ejb-jar.xml
and using a client servlet class "GameServ.class"
WEB-INF/classes/toy/GameServ.class

Now till I think everything is all right...
Now i started the weblogic...then called the index page
and from the index page I am calling the bean using the mentioned servlet client "GameServ.class" and during calling process i am getting a exception "java.lang.ClassCastException" at the line mentioned below inside ClentServ.class..>
line of error-->"GameHome sh=(GameHome) PortableRemoteObject.narrow(ref,GameHome.class);"

I tried my best but i could not get out of this problem and for more clearity i am writing the java files inside a package "toy" used here..as below....>>

*******************  files used *****************

***** remote interface *******

package toy;

import java.rmi.*;
import javax.ejb.*;
public interface Game extends EJBObject
 {
    public String getName()throws RemoteException;
      public int getSum(int x1,int x2) throws RemoteException;

}

********** home interface *********

package toy;

import java.rmi.*;
import javax.ejb.*;
import java.util.*;

public interface GameHome extends EJBHome
{

   public Game create()throws RemoteException,CreateException;

  }

******** bean **********

package toy;

import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import javax.naming.NamingException;
import javax.ejb.EJBException;
import java.sql.*;

  public class GameBean implements SessionBean
  {
   
  public void ejbActivate() {System.out.println("Activate");  }
  public void ejbRemove() {  System.out.println("remove");}
  public void ejbPassivate() { System.out.println("<.....passivate....>"); }
  public void setSessionContext(SessionContext ctx) {    System.out.println("<....sessioncontext....>");    }
  public void ejbCreate () throws CreateException {  System.out.println("<.....create....>");    }
 
  public String getName()
  {
     System.out.println("<.....chk 1 .....>");
       String name="GAME";
      
      return name;
 }

 public int getSum(int x1,int x2)
 {
  int x;
  x=x1+x2;
  System.out.println("<.....chk 5 ...x..> "+x);
  return x;
}

}



**************** ejb-jar.xml **************

<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>

<ejb-jar>
 <enterprise-beans>
  <session>
  <ejb-name>Game</ejb-name>
  <home>toy.GameHome</home>
  <remote>toy.Game</remote>
  <ejb-class>toy.GameBean</ejb-class>
  <session-type>Stateless</session-type>
  <transaction-type>Container</transaction-type>
  </session>
 </enterprise-beans>
</ejb-jar>


**************  clent servlet  ***************


package toy;

import toy.Game;
import toy.GameHome;

import javax.ejb.*;
import javax.rmi.*;
import javax.rmi.PortableRemoteObject;
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.naming.*;
import java.io.*;
import java.util.Properties;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GameServ extends HttpServlet {

  public void init(ServletConfig config) throws ServletException  {
    super.init(config);
 
  }

  public void service(HttpServletRequest req, HttpServletResponse res)
       throws IOException
  {
 
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();
     
       int ss=0;
       String name="";
       System.out.println("inside client : GameServ ");
       try
       {
          String url = "t3://localhost:7001";
         
        Properties h = new Properties();
          h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
          h.put(Context.PROVIDER_URL, url);
          Context ctx = new InitialContext(h);
             
        Object ref = ctx.lookup("gum");
        System.out.println("inside client : objref-3 "+ref);
      
        System.out.println("....inside Zone...");

(**)        GameHome sh=(GameHome) PortableRemoteObject.narrow(ref,GameHome.class);
//here i am getting    >> ClassCastEXCEPTION<<

          System.out.println("inside client : sh-4 "+sh);
      
         Game sr =sh.create();
        System.out.println("inside client : sr-5 "+sr);
            
        name=sr.getName();
          System.out.println(" Client ...Got the name : "+name);
 
         ss = sr.getSum(1,7);
         System.out.println("Got the Sum :" + String.valueOf(ss));

      }
      catch(Exception e)
          {
              System.out.println(e);
            }

   
    out.println("<html><head>\n" +
                "<title>Check Servlet</title>\n" +
                "</head>\n" +
                "<body bgcolor=#ffffff> <font face=\"Comic Sans MS\" size+=4 color=red>" +
                "<br> <center><h1> name = "+name+"</h1></center>" +
            "<br> <center><h1> sum = "+ss+"</h1></center>" +
              "<center><h1>Game</h1></center>");
    out.println("</body></html>");
  }
}



************************** Exception I am getting  ****************************

inside the "toy.GameServ.java" i am getting    >> ClassCastEXCEPTION<< at line (**) as below

   " GameHome sh=(GameHome) PortableRemoteObject.narrow(ref,GameHome.class); "

I hope i have described my problem very well and i request you to give me solution so that my client application may call the bean.

********  Waiting for the response. *******

*******************************    END    ****************************************

 
0
Comment
Question by:sanjeev_1772
4 Comments
 
LVL 1

Accepted Solution

by:
naidubs earned 50 total points
ID: 7176721
using reflection try to get class name , so that u will come to know which class ur getting.
code is
Class cls = ref.getClass();
S.O.P("class name"+cls.getName());

uu need to verify the class path and add home&remote classes in client jar file.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Where is my Java compiler located 3 1,584
Webserver Error 4 38
tomcat users xml 7 105
getSandwich  java challenge 22 93
Configure Web Service (server application) I. Configure security for Web Services methods First, we need to protect Session bean which implements the service: 1. Open EJB deployment descriptor (ejb-jar.xml) in the EJB project that contains you…
This exercise is about for the following scenario: Dmgr and One node with 2 application server. Each application server contains it owns application. Application server name as follows server1 contains app1 server2 contains app1 Prereq…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now