help,help,各位高手,麻烦给个在struts中调用EJB的代码看看.

cat7708 2004-05-04 07:08:03
下面的方法是不是要自己定义啊?
public Context getInitialContext() throws Exception{
String url="t3://localhost:7001";
String user="sa";
String password="123456789";
Properties properties=null;
try{
properties=new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL,url);
if(user!=null)
{
properties.put(Context.SECURITY_PRINCIPAL,user);
properties.put(Context.SECURITY_CREDENTIALS,password==null?"":password);
}
return new InitialContext(properties);
}catch(Exception e){ throw e; }
}
下面的调用有问题,各位能给个成功的代码看看吗?
try{
Context context=hello2.getInitialContext(); //hello2是帮助类的实例变量
Object object=context.lookup("facade");
facadeHome fHome=(facadeHome)PortableRemoteObject.narrow(object,facadeHome.class);
facade fac=fHome.create();
info=fac.getInfo(sno); //调用EJB方法返回字符串信息
}catch(javax.naming.NamingException namingException) { namingException.printStackTrace(); }
catch(java.rmi.RemoteException remoteException){ remoteException.printStackTrace(); }
catch(javax.ejb.CreateException createException){ createException.printStackTrace(); }
catch(Exception ex){ ex.printStackTrace(); }
小弟是想在struts模式的控制器中调用EJB。
...全文
55 16 点赞 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cat7708 2004-05-13
问题解决了,谢谢各位的帮忙.主要原因是在客户湍应该引用EJB的部署文件,即.jar文件.
  • 打赏
  • 举报
回复
cat7708 2004-05-11
EJB是部署成功了。我用的是weblogic,不过,我倒没查过部署文件,因为知道EJB模块名,也知道EJB名称,我会回去再核对一下的。谢谢各位英雄的帮助,这个小问题对我来说不小啊。
  • 打赏
  • 举报
回复
redex 2004-05-10
楼主你的ejb部署成功了吗?你检查部署文件中的JNDI名了吗?
大家一起努力,我就不信这个鸟问题能难到诸位英雄,呵呵!!!
  • 打赏
  • 举报
回复
cat7708 2004-05-08
是不是问题出在weblogic啊,即weblogic是不是需要特别的设置?我用的是weblogic7.0+Jbuilder8,能用struts,对weblogic我从来装好了能用就行,没做过特别的设置,各位兄弟看看问题是不是出在weblogic?
  • 打赏
  • 举报
回复
cat7708 2004-05-08
还是不行啊。
  各位以前做得成功的,是怎么做的啊?能让我看看吗?
  • 打赏
  • 举报
回复
cat7708 2004-05-07
谢谢各位的帮忙,我试试
  • 打赏
  • 举报
回复
yeshucheng 2004-05-07
楼上有很多兄弟对模式的概念都不清楚,呵呵
你们还是挑本关于ejb设计模式的书看看,不要一味的copy
  • 打赏
  • 举报
回复
redex 2004-05-07
楼上的,楼主的本意你就搞错了,还谈什么模式不模式?
楼主只是想知道如何在struts中调用ejb,遇到了问题,
让大家帮忙看看;尽管帖这个帖的位置可能不对;
  • 打赏
  • 举报
回复
redex 2004-05-07
哦,错了,这个吧:
try{
Context ctx=hello2.getInitialContext();
FacadeHome fhome=(FacadeHome)ctx.lookup("FacadeHome");
Facade fac=fhome.create();
info=fac.getInfo(sno);
}
  • 打赏
  • 举报
回复
redex 2004-05-07
试试下面代码:
try{
Context ctx=hello2.getInitialContext();
FacadeHome fhome=(FacadeHome)ctx.lookup("FacadeHome");
Facade fac=fHome.create();
info=fac.getInfo(sno);
}
  • 打赏
  • 举报
回复
cat7708 2004-05-06
可是问题是,问题出在这一句:Object object=context.lookup("facade");用这一句,在IE中的login.jsp提交信息后,IE中出现如下的错误: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.
  而若把那一句改成:object=context.lookup("java:/comp/env/CMP/facade");则浏览器中无错误信息,可以转到别的页,但运行出现异常。经过测试出现的异常是下面这个异常catch(javax.naming.NamingException namingException)。也就是说执行到object=context.lookup("java:/comp/env/CMP/facade");这一句时便出现异常。各位高手,请帮忙看看,是怎么回事啊。应该怎么改呢?能否给个正确的代码看看?对了,若改成object=context.lookup("java:/comp/env/facade")也不行。其中,facade是myejb文件夹下名称为CMP的EJB模块中的一个会话bean,我在此bean中调用另一企业bean,名称为Student.
  • 打赏
  • 举报
回复
x980702paul 2004-05-06
可以在action里直接调用,或者在封装一个类都可以
  • 打赏
  • 举报
回复
ziyang 2004-05-06
对。在Action里面直接调用
try{
Context context=hello2.getInitialContext(); //hello2是帮助类的实例变量
Object object=context.lookup("facade");
facadeHome fHome=(facadeHome)PortableRemoteObject.narrow(object,facadeHome.class);
facade fac=fHome.create();
info=fac.getInfo(sno); //调用EJB方法返回字符串信息
}
就可以。
  • 打赏
  • 举报
回复
cat7708 2004-05-05
各位大哥帮帮忙啊。
  • 打赏
  • 举报
回复
redex 2004-05-05
直接在自定义的action类的派生类中调用EJB
  • 打赏
  • 举报
回复
cat7708 2004-05-05
楼上的兄弟是说直接调用以下几句就可以了吗?
try{
Context context=hello2.getInitialContext(); //hello2是帮助类的实例变量
Object object=context.lookup("facade");
facadeHome fHome=(facadeHome)PortableRemoteObject.narrow(object,facadeHome.class);
facade fac=fHome.create();
info=fac.getInfo(sno); //调用EJB方法返回字符串信息
}
  • 打赏
  • 举报
回复
相关推荐
发帖
Java EE
加入

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2004-05-04 07:08
社区公告
暂无公告