这可能是我犯的一个愚蠢的错误,但是在这里:
我创建了一个名为XXEar的企业应用程序项目(我正在使用Eclipse Indigo)。然后,我创建了一个名为XXEJB的EJB项目,并将其添加到EAR成员资格(XXEar)。同时创建XXEJBClient和XXEJBClient.jar。
这样,每次我需要与XXEJB中的域进行交互时,我将使用XXEJBClient中定义的接口,只需要将XXEJBClient.jar赋予其他项目。
最后,我创建了一个名为XXWeb的动态Web项目。
因此,问题是,在XXWeb中,我有我的JSP和servlet,将.ear部署在glassfish中,并且可以通过使用XXEJBClient中的接口向数据库添加信息来访问XXEJB中的域。
像这样:
在XXEJBClient中
@Local
public interface UserHandlerLocal {
public void addUser(String name, int NPC);
}
这有效,但是如果我想获取“用户”对象,则不会让我给出错误
@Local
public interface UserHandlerLocal {
public void addUser(String name, int NPC);
public User getUser(int NPC);
}
项目设置中缺少什么吗?
编辑:
完成这项工作的一件事是仅创建XXEJB,而没有创建XXEJBClient和XXEJBClient.jar
在编写域类之后,我创建了XXEJBClient并设法将主要操作嵌入XXWeb。
不幸的是,如果我想向域中添加新类,则不知道如何更新XXEJBClient.jar。
最佳答案
检查XXEJBClient.jar是否同时包含User.class和UserHandlerLocal.class。
您需要在客户端和服务器端都看到这两个类文件。
并且两个类文件应该完全相同(首先编译,然后复制)。如果由于某种原因您编译了两次相同的java文件(一次用于服务器端,一次用于客户端),那么您需要向java类添加序列号ID:
private static final long serialVersionUID = 1;