Hi,
The error is indicating some kind of classpath problem. You have not
mentioned your environment.
Have you included client jar in your classpath.
Cheers
Ashwani
----- Original Message -----
From: "Edward" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, May 27, 2002 2:57 PM
Subject: Why my ejb can't run in the servlet?
> I have question about EJB,I want to call ejb from a servlet,but I can't
call it successfully.My EJB locates in follow directory:
>
> F:\login\ejb\loginEJB\CheckPasswordHome.class
> F:\login\ejb\loginEJB\CheckPassword.class
> F:\login\ejb\loginEJB\CheckPasswordEJB.class
> F:\login\ejb\loginEJB\CheckPasswordHome.java
> F:\login\ejb\loginEJB\CheckPassword.java
> F:\login\ejb\loginEJB\CheckPasswordEJB.java
> F:\login\ejb\CheckPassword.jar
> F:\login\ejb\META-INF\ejb-jar.xml
> F:\login\ejb\META-INF\ejb-jar.xml
>
> I create CheckPassword.jar like follows:
> F:\login\ejb\>javac -classpath .;F:\j2sdkee1.3.1\lib\j2ee.jar
loginEJB\*.java
>
> file://CheckPasswordEJB.java
> package loginEJB;
> import javax.ejb.SessionContext;
> public class CheckPasswordEJB implements javax.ejb.SessionBean
> {
> public void ejbCreate()
> { }
> public void ejbRemove()
> { }
> public void ejbActivate()
> { }
> public void ejbPassivate()
> { }
> public void setSessionContext(SessionContext ctx)
> { }
> public String logininformation(String username,String password)
> { System.out.println("ID="+username+",Password="+password);
> return "OK";}
> }
>
> My servlet locates in follow directory:
>
> D:\Apache Tomcat 4.0\webapps\login\servlets\index.html
> D:\Apache Tomcat
4.0\webapps\login\WEB-INF\classes\GetUserIdentity.class
>
> In my index.html,I call my servlet "GetUserIdentity.class",the file
"index.html" is follows:
> <html>
> <head>
> <title>Check Identity</title>
> </head>
> <body>
> <center>
> <br><br>
> <form
action="http://192.168.39.152:8080/login/servlet/GetUserIdentity"
method="POST">
> <table align="center" width="%100" cellspacing="2" cellpadding="2">
> <tr>
> <td align="right">Input ID </td>
> <td><input type="Text" name="ID" align="left" size=15></td>
> </tr>
> <br><br><br>
> <tr>
> <td align="right">Input Password </td>
> <td><input type="password" name="password" align="left" size=15
color="red"></td>
> </tr>
> </table>
> <br><br>
> <input type="Submit" name="okbutton" value=" OK " >
> <input type="button" name="cancelbutton" value=" Cancel "
onclick="window.close()">
> </form>
> </center>
> </body>
> <html>
>
> My GetUserIdentity is follows:
>
> import loginEJB.*;
> import java.util.Properties;
> import javax.naming.Context;
> import javax.naming.InitialContext;
>
> public class GetUserIdentity extends HttpServlet
> {
>
> public void doPost(HttpServletRequest request,HttpServletResponse
response)
> throws ServletException,IOException
> {
> String username=request.getParameter("ID");
> String password=request.getParameter("password");
> String pp=test();
> out.println("<html>");
> out.println("<title>Login Succeed!</title>");
> out.println("<body>");
> out.println("<p> ssssYour ID is "+username+"</p>");
> out.println("<p> Your Password is "+password+"</p>");
> out.println("<p> Message is "+pp+"</p>");
> out.println("</body>");
> out.println("</html>");
> }
>
> }
>
> public String test()
> {
> try
> {
>
> String message = "";
> Properties prop=new Properties();
>
prop.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFact
ory");
> prop.put(Context.PROVIDER_URL,"t3://192.168.39.152:7001");
> Context ctx=new InitialContext(prop);
> Object objref=ctx.lookup("CheckPassword");
> CheckPasswordHome
home=(CheckPasswordHome)javax.rmi.PortableRemoteObject.narrow(
> objref,CheckPasswordHome.class);
> CheckPassword ss=home.create();
> message=ss.logininformation("Mary","456");
> System.out.println("Return message:"+message);
> ss.remove();
>
> return message;
>
> }
> catch(Exception e)
> {
> e.printStackTrace();
> }
> finally
> {
> return "abc";
> }
> }
>
> }
>
> When I run index.html,and click OK button,it raise follows error:
>
> type Exception report
> message Internal Server Error
> description The server encountered an internal error (Internal Server
Error) that prevented it from fulfilling this request.
> exception
> javax.servlet.ServletException: Cannot allocate servlet instance for path
/login/servlet/GetUserIdentity
> at
org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java
:415)
> at
org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:216)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
> at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
> at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
> at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:201)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
> at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
> at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
> at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
> at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
> at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
> at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:163)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
> at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1011)
> at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
)
> at java.lang.Thread.run(Unknown Source)
> root cause
> java.lang.NoClassDefFoundError: javax/ejb/EJBObject
> at java.lang.Class.newInstance0(Native Method)
> at java.lang.Class.newInstance(Unknown Source)
> at
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:820)
> at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:615)
> at
org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java
:396)
> at
org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:216)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
> at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
> at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
> at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:201)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
> at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
> at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
> at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
> at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
> at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
> at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:163)
> at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
> at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1011)
> at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
)
> at java.lang.Thread.run(Unknown Source)
>
> I'm very puzzled with it,because I make a test my ejb program,it can run
at command prompt,my test ejb program like that:
>
> file://testEJB.java
> import loginEJB.*;
> import java.util.Properties;
> import javax.naming.Context;
> import javax.naming.InitialContext;
> public class testEJB
> {
> public static void main(String args[])
> {
> test();
> }
> public static void test()
> {
> try
> {
> String message;
> Properties prop=new Properties();
>
prop.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFact
ory");
> prop.put(Context.PROVIDER_URL,"t3://192.168.39.152:7001");
> Context ctx=new InitialContext(prop);
> Object objref=ctx.lookup("CheckPassword");
> CheckPasswordHome
home=(CheckPasswordHome)javax.rmi.PortableRemoteObject.narrow(
> objref,CheckPasswordHome.class);
> CheckPassword ss=home.create();
> message=ss.logininformation("Mary","123");
> System.out.println("Return message:"+message);
> ss.remove();
> }
> catch(Exception e)
> {
> e.printStackTrace();
> }
> }
>
> }
>
> The file testEJB.java locates F:\login\ejb\testEJB.java
> When I compile it likes follows:
> F:\login\ejb\>javac -classpath
.;F:\j2sdkee1.3.1\lib\j2ee.jar;E:\bea\wlserver6.1\lib\weblogic.jar;CheckPass
word.jar testEJB.java
>
> Then I run it like follows:
> F:\login\ejb\>java -classpath
.;F:\j2sdkee1.3.1\lib\j2ee.jar;E:\bea\wlserver6.1\lib\weblogic.jar;CheckPass
word.jar testEJB
>
> I found testEJB runs well. I'm very puzzled why I put parts code of it
into a servlet,it can't work??? I don't know the reason,Please help me!
> Any idea will be appreciated!
> Thanks in advances!!!
>
> Edward
>
>
===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> of the message "signoff EJB-INTEREST". For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>
>
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".