日期:2014-05-20  浏览次数:20808 次

EJB3,lookup到Bean后,不能强转成业务接口。请帮帮忙
这个是我的业务接口

Java code
package com.helloworld;

import java.util.Date;

public interface HelloWorldRemote {
    public String getAuthor();
    public String getVersion();
    public Date getDate();
    public String getUUID();
}



Bean
Java code
package com.helloworld.bean;

import java.util.Date;
import java.util.UUID;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import com.helloworld.HelloWorldRemote;

@Stateless
@Remote (HelloWorldRemote.class)
public class HelloWorldBean implements HelloWorldRemote {

    @PostConstruct
    public void postConstruct() {
        System.out.println(this.getClass().getName()+"被初始化!");
    }
    
    @PreDestroy
    public void destory() {
        System.out.println(this.getClass().getName()+"被销毁!");
    }
    
    public String getAuthor() {
        return "tyo";
    }

    public Date getDate() {
        return new Date();
    }

    public String getUUID() {
        return UUID.randomUUID().toString();
    }

    public String getVersion() {
        return "v1.0";
    }
}




然后在另一个Web工程的Servlet里面调
Java code
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        HelloWorldRemote h = null;
        try {
            Context context = new InitialContext();
            h = (HelloWorldRemote)context.lookup("HelloWorldBean/remote");
        } catch (NamingException e) {
            e.printStackTrace();
        }
        out.flush();
        out.close();
    }




两个工程部署在一个jboss4.2应用服务器里面。
但是运行的时候总是报错,弄了好多次了还是一样。之前我弄的时候没有报错,都是这样写的。

java.lang.ClassCastException: $Proxy65 cannot be cast to com.helloworld.HelloWorldRemote
  com.helloworld.servlet.HelloWorldServlet.doGet(HelloWorldServlet.java:44)
  javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
  javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


麻烦老鸟帮忙解决一下,谢谢。


------解决方案--------------------
我想应该和HelloWorldBean的UUID有关
------解决方案--------------------
看看ejb一套的什么home啊的类,看看一致吗
------解决方案--------------------
@Stateless(name="userService")
@Remote
我写的时候使用的是这样的方式注解

调用的时候
(UserService)context.lookup("userService/remote");

参考下?