当前位置: 技术问答>java相关
一个关于EJB的最基本的问题,解决了高分相送,只限今天!!!!!
来源: 互联网 发布时间:2015-08-27
本文导语: 我在用Stateless EJB时客户端代码为 import javax.naming.Context; import javax.naming.InitialContext; import java.util.Properties; public class HelloClient { public static void main(String args[]) throws Exception { Context ctx=new I...
我在用Stateless EJB时客户端代码为
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;
public class HelloClient {
public static void main(String args[]) throws Exception {
Context ctx=new InitialContext();
Object obj=ctx.lookup("hello");
try{
HelloHome home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);
}
catch(Exception e){
e.printStackTrace();
}
Hello hello=home.create();
System.out.println(hello.hello());
hello.remove();
}
}
当执行到Try里面的代码时,就报
java.lang.ClassCastException
at com.sun.corba.se.internal.javax.rmi.PortableRemoteObject.narrow(Porta
bleRemoteObject.java:293)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:134)
at HelloClient.main(HelloClient.java:15)
还请各位高手、大师指点!
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;
public class HelloClient {
public static void main(String args[]) throws Exception {
Context ctx=new InitialContext();
Object obj=ctx.lookup("hello");
try{
HelloHome home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);
}
catch(Exception e){
e.printStackTrace();
}
Hello hello=home.create();
System.out.println(hello.hello());
hello.remove();
}
}
当执行到Try里面的代码时,就报
java.lang.ClassCastException
at com.sun.corba.se.internal.javax.rmi.PortableRemoteObject.narrow(Porta
bleRemoteObject.java:293)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:134)
at HelloClient.main(HelloClient.java:15)
还请各位高手、大师指点!
|
可能是你的classpath里边的HelloHome的类的版本和服务器上的不同,仔细检查一下classpath,然后把服务器上的客户端的类搞到自己的服务器上再试一下
|
客户端需要EJB deploy时,生成的stub类,一般ejb container会生成一个客户需要的class的包(*.jar),怎样得到这样的包是根据不同的container而不同的。运行客户程序时,java要能找到这个包(ie. set classpath,etc)