EJB的主要目的是远程方法调用。就是说,对象在A机器(服务器端)上,而我却要在B机器(客户端)上调用该对象的方法。那么,如何从客户端调用服务器端的对象呢?有一种叫做JNDI的技术可以解决这问题。但是它返回的是Object,所以我们在客户端得到对象后,要想调用其业务方法,必须做类型转换,换句话说,客户端必须知道该对象具备什么功能。
EJB中有个“远程接口”的概念,这个远程接口就是用来解决这个问题的。远程接口用来定义EJB的功能:一方面,服务器端的Bean类会实现这个接口。另一方面,客户端接收到JNDI返回的Object后,会将该Object转换成远程接口的类型,这样就可以调用其业务方法啦。
所以,远程接口不但要在服务器端存在,而且客户端也需要远程接口。MyEclipse的Create an EJB Client JAR module to hold the client interfaces and classes 就是让我们在书写服务器端代码时,把一些必要的东西比如远程接口等放入jar中。将来在开发客户端时,是需要加入这个jar的。换句话说,这个jar是迟早都需要的,你还是勾上吧。呵呵。万一你现在没勾,解决方案有:
1、手动生成jar(包含远程接口等)
2、把 远程接口.class 拷贝到客户端去用
3、把 远程接口.java 拷贝到客户端去用
4、如果是在同一台机器上开发,则在客户端的Build Path添加对服务器端项目的引用小结:
1、Create an EJB Client JAR module to hold the client interfaces and classes不是创建新的工程,只是生成一个jar文件,其包含开发客户端所必需的内容(如远程接口)
2、建议楼主在开发时,勾中这个勾