1

作为应用程序服务器,我使用 GlassFish 创建新的 Java EE 6 应用程序。

我的工作区中有两个项目,分别是。在一台服务器上。

第一个是纯 EJB 项目,包括一些具有本地和远程可访问性的 EJB。(我在 EJB 中使用@remote@local。接口保持纯净。)

第二个是尝试使用 InitialContext-lookup 从第一个模块连接其中一个 EJB 的 Web 项目。由于两个模块都在同一台服务器上,我使用本地接口进行通信。我将检索到的对象(查找后)转换为“对象”,它工作正常。但作为一个简单的对象:没用。

为了获得正确的 EJB 实例,我将 EJB 的接口(本地和远程)提取到一个外部 jar 文件中,并将其添加到两个模块中。结果是我的 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 并且使用 EJB 组件级注解(@Stateless、@Stateful、@MessageDriven、@Singleton)进行了注解,请检查 server.log 以查看注解是否被正确处理。请查看 server.log。登录以获取更多详细信息。

server.log 是这样说的:

信息:来自主机 127.0.0.1 的用户 [admin] 没有管理访问权限
警告:注释处理中的错误:java.lang.NoClassDefFoundError:de/myapp/business/user/facade/UserServiceFacadeLocal
SCHWERWIEGEND:部署应用程序时出现异常 [bacchusBusiness] SCHWERWIEGEND:无效的 ejb jar [bacchusBusiness]:它包含零 ejb。

进口运作良好。没有错误,没有异常。但是如果服务器找不到接口,EJB 可能会出现错误。

4

0 回答 0