lookup时遇到的问题!!!

ayala_strike 2003-02-17 11:54:03
AuBean 的接口为Remote,写了一个Client运行正确

import java.io.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.util.*;

public class Client2
{
//Process the post request
public static void main(String[] args)
{
try
{
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
Context ctx = new InitialContext(p);

//look up JNDI name
Object ref = ctx.lookup("AuBean");

//cast to Home interface
devejb5.AuHome auHome = (devejb5.AuHome)PortableRemoteObject.narrow(ref,devejb5.AuHome.class);

// cast to Home interface
devejb5.Au auEJB = auHome.create();
System.out.println(auEJB.say());

}
catch (Exception ex){System.out.println("ShowOrdersServlet doPost() error :"+ex.getMessage());}
}
}
,但是用同样的Servlet却在lookup出错,
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;

public class AuServlet extends HttpServlet
{
static final private String CONTENT_TYPE = "text/html;charset=GBK";

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
try
{
out.println("Welcome!");
out.println(request.getParameter("txt_username"));
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
Context ctx = new InitialContext(p);

//look up JNDI name
Object ref = ctx.lookup("AuBean");



}
catch(Exception ex)
{
out.println("AuServlet error:doPost() "+ex.getMessage());
}
}
}
提示:


Error 500--Internal Server Error
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
10.5.1 500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request.
??怎么回事啊,郁闷!
...全文
178 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ayala_strike 2003-02-19
  • 打赏
  • 举报
回复
问题我解决了:
原因是因为我是在setEnv.cmd中设了Classpath

应该在startWls.cmd加上AuBean.jar
flylikebird 2003-02-18
  • 打赏
  • 举报
回复
的确没有设置Context.PROVIDER_URL属性,但是如果是这个错误,应该抛出connect异常,不应该是上面的错误。
Ivasons 2003-02-18
  • 打赏
  • 举报
回复
应该就是路经问题,怀疑是Package不对,给出Ejb的代码或者配置。
l_clove 2003-02-18
  • 打赏
  • 举报
回复
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();
ayala_strike 2003-02-18
  • 打赏
  • 举报
回复
大家谁能帖一下你们的setWLEnv.cmd中的CLASSPATH和我的电脑中的CLASSPATH吗?

我比较一下
ayala_strike 2003-02-18
  • 打赏
  • 举报
回复
我的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.jar

set 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
study_body 2003-02-17
  • 打赏
  • 举报
回复
错误信息全一些。
albert_qhd 2003-02-17
  • 打赏
  • 举报
回复
会不会是local接口的问题。改成remote接口试试行吗?
ayala_strike 2003-02-17
  • 打赏
  • 举报
回复
我也觉得是路径的问题,可是却无从下手,client.java可以访问Session Bean, Servlet却不行,CLASSPATH没有错啊,难道要在Path中加上AuBean.jar吗?
flylikebird 2003-02-17
  • 打赏
  • 举报
回复
应该是指包为devejb5的AuHome.java文件
wjmmml 2003-02-17
  • 打赏
  • 举报
回复
devejb5/AuHome 是什么啊??:?
flylikebird 2003-02-17
  • 打赏
  • 举报
回复
如果你的ejb在server端部署没有问题(remote client访问正确),那么我觉得就是类路径的问题了,在servlet中访问ejb和remote client中没有什么不同的。
ayala_strike 2003-02-17
  • 打赏
  • 举报
回复
我在setWLSenv.cmd和我的电脑中都指定了CLASSPATH=AuBean.jar了,为什么还是不行?
flylikebird 2003-02-17
  • 打赏
  • 举报
回复
你在servlet中只lookup没有cast为devejb5.AuHome,应该不会有这些错误的。
我觉得你是不是在servlet中cast了lookup返回的对象,而client的servlet中没有包含devejb5.AuHome.java这个类.
ayala_strike 2003-02-17
  • 打赏
  • 举报
回复
错误提示:
<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)
>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧