直接在自定义的action类的派生类中调用EJB

解决方案 »

  1.   

    楼上的兄弟是说直接调用以下几句就可以了吗?
    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方法返回字符串信息
        }
      

  2.   

    对。在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方法返回字符串信息
        }
    就可以。
      

  3.   

    可以在action里直接调用,或者在封装一个类都可以
      

  4.   

    可是问题是,问题出在这一句: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.
      

  5.   

    试试下面代码:
    try{
          Context ctx=hello2.getInitialContext(); 
          FacadeHome fhome=(FacadeHome)ctx.lookup("FacadeHome");
          Facade fac=fHome.create();
          info=fac.getInfo(sno);
        }
      

  6.   

    哦,错了,这个吧:
    try{
          Context ctx=hello2.getInitialContext(); 
          FacadeHome fhome=(FacadeHome)ctx.lookup("FacadeHome");
          Facade fac=fhome.create();
          info=fac.getInfo(sno);
        }
      

  7.   

    楼上有很多兄弟对模式的概念都不清楚,呵呵
    你们还是挑本关于ejb设计模式的书看看,不要一味的copy
      

  8.   

    楼上的,楼主的本意你就搞错了,还谈什么模式不模式?
    楼主只是想知道如何在struts中调用ejb,遇到了问题,
    让大家帮忙看看;尽管帖这个帖的位置可能不对;
      

  9.   

    是不是问题出在weblogic啊,即weblogic是不是需要特别的设置?我用的是weblogic7.0+Jbuilder8,能用struts,对weblogic我从来装好了能用就行,没做过特别的设置,各位兄弟看看问题是不是出在weblogic?
      

  10.   

    楼主你的ejb部署成功了吗?你检查部署文件中的JNDI名了吗?
    大家一起努力,我就不信这个鸟问题能难到诸位英雄,呵呵!!!
      

  11.   

    EJB是部署成功了。我用的是weblogic,不过,我倒没查过部署文件,因为知道EJB模块名,也知道EJB名称,我会回去再核对一下的。谢谢各位英雄的帮助,这个小问题对我来说不小啊。
      

  12.   

    问题解决了,谢谢各位的帮忙.主要原因是在客户湍应该引用EJB的部署文件,即.jar文件.