作为应用程序服务器我使用GlassFish来创建我的新Java EE 6应用程序。
我的工作区中有两个项目,分别是。在一个服务器上。
第一个是纯EJB项目,包括一些具有本地和远程可访问性的EJB。 (我在EJB中使用 @remote 和 @local 。接口保持纯。)
第二个是尝试使用InitialContext-lookup连接第一个模块中的一个EJB的Web项目。由于两个模块都在同一台服务器上,我使用本地接口进行通信。我将检索到的对象(在查找之后)转换为“对象”并且它工作正常。但作为一个简单的对象:没用。
为了获得正确的EJB实例,我在外部jar文件中提取了EJB的接口(本地和远程),并将其添加到两个模块中。结果是我的EJB不再被部署,因为新的构建版本似乎无效。
在EJB中是否存在带有@remote和@local注释的探针,其接口存储在外部jar中?
感谢您的帮助: - )
编辑:
EJB看起来像这样:
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import de.myapp.business.user.facade.UserServiceFacadeLocal;
import de.myapp.business.user.facade.UserServiceFacadeRemote;
@Stateless
@Remote(value=UserServiceFacadeRemote.class)
@Local(value=UserServiceFacadeLocal.class)
public class UserServiceFacade implements UserServiceFacadeLocal, UserServiceFacadeRemote
{ ... }
发布时的错误:
无法部署myappBusiness
模块的部署错误:myappBusiness:部署期间发生错误:部署应用程序时出现异常[myappBusiness]:无效的ejb jar
[myappBusiness]:它包含零ejb。
注意:
1.有效的ejb jar至少需要一个会话,实体(1.x / 2.x样式)或消息驱动的bean。
2. EJB3 +实体bean(@Entity)是POJO,请将它们打包为库jar 3.如果jar文件包含使用EJB组件级别注释(@Stateless,@ Stateful,@ MessageDriven,@ Singleton)注释的有效EJB,请检查server.log以查看注释是否已正确处理..请参阅服务器。记录更多详细信息。
server.log说:
信息:来自主机127.0.0.1的用户[admin]没有管理访问权限
WARNUNG:注释处理错误:java.lang.NoClassDefFoundError:de / myapp / business / user / facade / UserServiceFacadeLocal
SCHWERWIEGEND:部署应用程序时出现异常[bacchusBusiness] SCHWERWIEGEND:无效的ejb jar [bacchusBusiness]:它包含零ejb。
进口运作良好。没有错误,没有例外。但是如果服务器找不到接口,那么EJB可能会出错。