错误提示:
<2003-2-17 下午01时11分59秒> <Info> <HTTP> <101047> <[ServletContext(id=560901,n
ame=DefaultWebApp,context-path=)] AuServlet: init>
<2003-2-17 下午01时11分59秒> <Error> <HTTP> <101017> <[ServletContext(id=560901,
name=DefaultWebApp,context-path=)] Root cause of ServletException
java.lang.NoClassDefFoundError: devejb5/AuHome
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:493)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
1)
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(Generic
ClassLoader.java:390)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
Loader.java:152)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAw
areClassLoader.java:65)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
areClassLoader.java:43)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:195)
        at weblogic.utils.classfile.utils.CodeGenerator.generateClass(CodeGenera
tor.java:71)
        at weblogic.rmi.internal.StubGenerator.getStubClass(StubGenerator.java:6
27)
        at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:6
46)
        at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:6
41)
        at weblogic.rmi.extensions.StubFactory.getStub(StubFactory.java:59)
        at weblogic.common.internal.RemoteObjectReplacer.resolveObject(RemoteObj
ectReplacer.java:208)
        at weblogic.common.internal.WLObjectInputStreamBase2.resolveObject(WLObj
ectInputStreamBase2.java:45)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:399)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
        at weblogic.rmi.internal.CBVInputStream.readObjectInternal(CBVInputStrea
m.java:62)
        at weblogic.rmi.internal.CBVInputStream.readObject(CBVInputStream.java:5
6)
        at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.jav
a:90)
        at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteR
ef.java:263)
        at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteR
ef.java:229)
        at weblogic.jndi.internal.ServerNamingNode_WLStub.lookup(Unknown Source)        at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:338)
        at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:333)
        at javax.naming.InitialContext.lookup(InitialContext.java:350)
        at AuServlet.doPost(AuServlet.java:26)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:945)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:332)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:242)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:5363)
        at weblogic.security.service.SecurityServiceManager.runAs(SecurityServic
eManager.java:721)
        at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3043)
        at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2466)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:152)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:133)
>

解决方案 »

  1.   

    你在servlet中只lookup没有cast为devejb5.AuHome,应该不会有这些错误的。
    我觉得你是不是在servlet中cast了lookup返回的对象,而client的servlet中没有包含devejb5.AuHome.java这个类.
      

  2.   

    我在setWLSenv.cmd和我的电脑中都指定了CLASSPATH=AuBean.jar了,为什么还是不行?
      

  3.   

    如果你的ejb在server端部署没有问题(remote client访问正确),那么我觉得就是类路径的问题了,在servlet中访问ejb和remote client中没有什么不同的。
      

  4.   

    devejb5/AuHome 是什么啊??:?
      

  5.   

    应该是指包为devejb5的AuHome.java文件
      

  6.   

    我也觉得是路径的问题,可是却无从下手,client.java可以访问Session Bean, Servlet却不行,CLASSPATH没有错啊,难道要在Path中加上AuBean.jar吗?
      

  7.   

    会不会是local接口的问题。改成remote接口试试行吗?
      

  8.   

    Properties properties = null;
    String url = "t3://fileserver:7001";  //EJB容器的路径,你的代码里没有啊
    properties = new Properties();
    properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    properties.put(Context.PROVIDER_URL, url);
    try {
    Context context = new InitialContext(properties);
    Object ref = context.lookup("HelloBean");
    helloHome = (HelloHome) PortableRemoteObject.narrow(ref, HelloHome.class);
    create();
    String retValue = hello();
    lbResult.setText(retValue);
    remove();
      

  9.   

    应该就是路经问题,怀疑是Package不对,给出Ejb的代码或者配置。
      

  10.   

    的确没有设置Context.PROVIDER_URL属性,但是如果是这个错误,应该抛出connect异常,不应该是上面的错误。
      

  11.   

    我的Session Bean(即AuBean)是用JB7自动生成发布的,Client调用都没有问题,我想不应该是EJB的问题,我想可能是classpath不对吧,我帖出来大家看一下:
    set CLASSPATH=%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\weblogic_sp.jar;%WL_HOME%\server\lib\weblogic.jar;%WL_HOME%\server\lib\webservices.jar;%CLASSPATH%;d:\bea\weblogic700\server\lib\mm.mysql-2.0.2-bin.jar;D:\bea\user_projects\mydomain\myserver\upload\Tian1\Tian1.jar;D:\bea\user_projects\mydomain\myserver\upload\AuBean\AuBean.jarset PATH=%WL_HOME%\server\bin;%JAVA_HOME%\bin;%PATH%;d:\bea\weblogic700\server\lib\mm.mysql-2.0.2-bin.jar;D:\bea\user_projects\mydomain\myserver\upload\Tian1\Tian1.jar
    我的电脑中的classpath=
    ;%JAVA_HOME%\lib;c:\Program Files\Microsoft SQL Server 2000 JDBC\lib;d:\jbuilder7\jakarta-tomcat-4.0.3\common\lib\servlet.jar;C:\Program Files\Java\j2re1.4.1_01\bin;d:\jbuilder7\jdk1.3.1\bin;;D:\bea\user_projects\mydomain\myserver\upload\AuBean\AuBean.jar
      

  12.   

    大家谁能帖一下你们的setWLEnv.cmd中的CLASSPATH和我的电脑中的CLASSPATH吗?我比较一下
      

  13.   

    问题我解决了:
    原因是因为我是在setEnv.cmd中设了Classpath应该在startWls.cmd加上AuBean.jar