学习EJB3,用MyEclipse9开发了简单例子,EJB工程的web和ejb部分发布到jboss6下完全能正常运行,但是把web发布到tomcat7下调用jboss6下的ejb应用时出现了错误  
java.lang.ClassCastException: javax.naming.Reference cannot be cast to com.ejb3.HelloWorld我已经把ejb接口class文件复制到tomcat web项目的classes目录下,并把ejb所依赖的相应jar包复制到web项目的lib目录下(复制的jar包是从jboss client目录下复制的,但不全"jboss-aop-client.jar","jboss-aspect-jdk50-client.jar","jboss-ejb3-common-client.jar","jboss-ejb3-core-client.jar","jboss-ejb3-ext-api-impl.jar","jboss-ejb3-ext-api.jar","jboss-logging.jar","jboss-remoting.jar","jbossall-client.jar","jnp-client.jar","log4j.jar")

解决方案 »

  1.   

    你是怎么样调用jndi的
    jboss外部jndi调用挺麻烦的 还要配置文件和jboss一些设置的
      

  2.   


    这有啥麻烦的TOMCAT放JSP页面  JBOSS上EJB EJB去找DB
    注意的是TOMCAT下要放好JDNI的配置文件里面的配置好JBOSS的IP地址
    JBOSS上要开放IP地址让TOMCAT来访问
    我估计你是JBOSS没有对外网开放。
      

  3.   

    对了要是你EJB容器 不是JBOSS 要是是WEBLOGIC 或者其它的 你要用 该EJB容器的配置参数。
      

  4.   

    tomcat和jboss是在同一台电脑上部署的
      

  5.   


    <%@ page language="java" import="java.util.*"%>
    <%@ page contentType="text/html; charset=GBK"%>
    <%@ page import="com.foshanshop.ejb3.HelloWorld, javax.naming.*, java.util.Properties"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><%
    Properties props = new Properties();
    props.setProperty("java.naming.factory.initial",
    "org.jnp.interfaces.NamingContextFactory");
    props.setProperty("java.naming.provider.url", "localhost:1099");
    props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
    InitialContext ctx;
    try {
    ctx = new InitialContext(props);
    HelloWorld helloworld = (HelloWorld) ctx.lookup("myejb/HelloWorldBean/remote");
    out.println(helloworld.SayHello("哈哈"));
    } catch (NamingException e) {
    out.println(e.getMessage());
    }
    %>
      

  6.   

    jboss的jndi配置必须有
    <use-java-context>false</use-java-context>
    不然也不能从外部访问
      

  7.   


    你说的JNDI配置文件在什么目录下有?文件名叫什么?