EJB3.0问题

[复制链接]
查看11 | 回复4 | 2009-4-30 18:25:49 | 显示全部楼层 |阅读模式
package lan.ejb3;
public interface HelloWord {
String sayHello(String name);
}
package lan.ejb3;
public interface HelloWordLocal extends HelloWord {
}
package lan.ejb3.impl;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import lan.ejb3.HelloWord;
import lan.ejb3.HelloWordLocal;
@Stateless
@Remote(HelloWord.class)
@Local(HelloWordLocal.class)
public class HelloWordBean implements HelloWord ,HelloWordLocal {
@Override
public String sayHello(String name) {
return name + "说:你好,世界!";
}
}




EJBClientTest




出现如下异常:$Proxy126 cannot be cast to lan.ejb3.HelloWordLocal
服务器是JBOSS5.0.1GA
解决问题者追加100分
本例是为了证明当本地接口调用和远程接口调用同时存在时优先调用本地接口,如果HelloWordLocal 改成HelloWord就失去了意义了。我看了视频教程能运行成功,自己做却不行。

回复

使用道具 举报

千问 | 2009-4-30 18:25:49 | 显示全部楼层
HelloWord helloword = (HelloWordLocal) ctx.lookup("HelloWordBean/remote"); 通过lookup得到的是HelloWorld的对象,而不是HelloWorldLocal的对象.因为HelloWorldLocal继承了HelloWorld. 所以不能cast HelloWorld对象为HelloWorldLocal对象.JNDI名字为"HelloWordBean/remote"的就是remote对象.这句有两种改法:HelloWord helloword = (HelloWord) ctx.lookup("HelloWordBean/remote"); 或者...
回复

使用道具 举报

千问 | 2009-4-30 18:25:49 | 显示全部楼层
$Proxy126这个代理不能转换成你自己定义的HelloWordLocal接口,你的Remote是HelloWord接口,而Local才是HelloWordLocal接口:@Remote(HelloWord.class) @Local(HelloWordLocal.class) public class HelloWordBean impl...
回复

使用道具 举报

千问 | 2009-4-30 18:25:49 | 显示全部楼层
你去我博客看看,应该是服务器配置问题http://hi.baidu.com/cpuhandou/blog/item/2a24b60f523c13ef36d12290.html...
回复

使用道具 举报

千问 | 2009-4-30 18:25:49 | 显示全部楼层
ctx.lookup("HelloWordBean/remote") 是不是这里有问题因为异常是这样的: $Proxy126 cannot be cast to lan.ejb3.HelloWordLocal...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行