如何在单独的Web应用程序中访问EJB实现远程接口?

TCM*_*TCM 2 java module web-applications java-ee ejb-3.0

我正在使用Netbeans 6.8和Glassfish v3.0.

我创建了一个ejb模块并从数据库创建了实体类,然后使用远程接口创建了无状态会话bean.比如说.

 @Remote
public interface customerRemote{
    public void add(String name, String address);
    public Customer find(Integer id);
}

@Stateless
public class customerBean implements customerRemote{
    //implementations of methods
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个新的Web应用程序.但是现在如何在我的Web应用程序中访问远程ejb.我可以用jndi名称查找一个bean,但我想知道的是,它将返回什么类型的对象?我如何在customerRemote中进行类型转换?我的Web应用程序中没有任何名为customerRemote的类.那么,我该怎么做?另外,实体类客户怎么样?我的Web应用程序中也没有名为Customer的类.所有ejb和实体类都在单独的ejb模块中.请帮我 :(

ewe*_*nli 11

我如何在customerRemote中进行类型转换?我的Web应用程序中没有任何名为customerRemote的类.那么,我该怎么做?另外,实体类客户怎么样?我的Web应用程序中也没有名为Customer的类.所有ejb和实体类都在单独的ejb模块中.

您的Web应用程序必须依赖于包含这些类和接口的库.然后你就可以像往常一样导入界面和类型转换.你有两种方法:

  • 所有在一个罐子里.这似乎是你现在拥有的.在这种情况下,您的Web应用程序需要依赖于此jar.

  • 拆分API和实现.更好的方法是将ejb模块拆分为两个jar:一个ja​​r myModule-api包含属于模块API的类.在这种情况下,将是customerRemoteCustomer.另一个jar myModule-impl包含实现(当然,实现依赖于API).然后在您的Web应用程序中,您只需依赖于所在的API myModule-api.