在应用程序客户端访问一切正常?如果是真的话,肯定问题就是你的web.xml了

解决方案 »

  1.   

    多谢楼上提醒,问题已经搞定.但是我是把EJB工程和WEB工程放在EJB应用程序,组成一个EAR文件,然后才能在JSP中调用EJB的.
    但是我想这种做法,EJB和JSP都依赖于一个JVM运行,等于本地调用.
    如果我想远程调用,把EJB和JSP不放在一个机子上,那么配置文件应该如何部署???
      

  2.   

    将EJB和WEB module组装成EAR文件布署后肯定是没有问题的,其实这中间关键的问题在于,EJB module布署后会生成一个Client端,需要将这个包放在WEB module能访问的目录下,如WEB-INF/lib。如果需要远程调用,需用remote实现EJB而不是用local方法,如将JSP布署在机器A,将EJB布署在机器B上,在JSP里调用EJB时,使用IIOP调用,此时你需要先获得机器B中ORB的端口号,    String iiopurl = "iiop://<URL>:<PORT>";
        Properties env = new Properties();
        env.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
        env.put("java.naming.provider.url", iiopurl);
        Context ic = new InitialContext(env);    Object objref = ic.lookup("<EJB JNDI>");
        POInfoRemoteHome poinfoHome = (POInfoRemoteHome)PortableRemoteObject.narrow(objref, POInfoRemoteHome.class);
        POInfoRemote poinfo = poinfoHome.create(param1, param2);
        ......当然,EJB部署后生成的client端也需要COPY到机器A中的WEB module下其能访问的目录下。
      

  3.   

    我的EJB容器是JBOSS4.03sp1.
    如果把EJB放在机器A上.把JSP文件放在机器B上.
    那么在机器B里的WEB工程中的LIB文件夹下存放HOME接口的扩展接口和远程接口的扩展接口.然后把JBOSS的CLIENT的JAR复制到WEB工程中的LIB文件夹下.
    其他还要配置做法?如果按上面做法,机器B上用应用程序是可以正常访问到的,JSP就是不行.我没用RMI IIOP协议.我用的是BEA的JNDI技术