最近在学习ejb,我照着书写了一个例子,但是在运行的时候出了一个问题jndi.properties 文件如下
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost部署成功bean 代码如下import javax.ejb.Remote;
import javax.ejb.Stateless;@Stateless
@Remote
public class FirstEjbBean implements FirstEjb { @Override
public String sayHello(String name) { 
return "hello " + name;
}}
远程调用代码如下:
public static void main(String[] args) {
try {
InitialContext initialContext = new InitialContext();

FirstEjbBean firstEjbBean = (FirstEjbBean) initialContext.lookup("FirstEjbBean/remote");
 
} catch (NamingException e) { 
e.printStackTrace();
}
执行的时候抛出
Exception in thread "main" java.lang.ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to cn.com.zero.ejb.FirstEjbBean
at cn.com.zero.ejb.TestEjb2.main(TestEjb2.java:15)但是如果 Object firstEjbBean = (Object) initialContext.lookup("FirstEjbBean/remote");
         System.out.println(statelessEjbBean);得到结果:jboss.j2ee:jar=ejbTest.jar,name=StatelessEjbBean,service=EJB3请教 高手怎么回事,非常感谢。 我要怎么样调用 romote bean的方法 
非常感谢 

解决方案 »

  1.   

    远程FirstEjbBean哪来的? 自己写的?还是jar 既然你服务器端都用了接口 远程就用接口撒!把服务器端的接口打成jar放到远程来就可以调用了
    我也才学不久 多交流交流!
      

  2.   

    我是把服务器端代码打成jar文件了呀,放在配置容器里面了。楼上的意思是能不能说得明白一些。非常感谢,最高把代码贴上详细一点。我刚刚学, 再次感谢!
      

  3.   

    代码没在了 你找ejb入门学习看哈嘛 黎活明的书 下来看哈 要的话可以发给你