这太令人困惑了,当我在 Netbeans 中创建一个新的 session Bean 时,它有一个用于创建本地接口(interface)
和一个远程
的选项>。但是,如果我选择 remote
,则会出现一个包含现有 Java SE 和 ME 项目的列表。如果我选择其中任何一个(顺便说一句,我打算稍后将其中一个用作 bean 的 GUI 客户端)。它在我的 Enterprise Application 中创建 session bean,但在 Java SE
项目中添加远程类。我不明白这是怎么回事?
最佳答案
如果您创建一个无状态 EJB sesion bean,它可以实现一个本地和/或一个远程接口(interface)。
在您的情况下,我建议使用远程 界面,因为您的一个客户端 将是远程的:命令行独立应用程序通常不在应用程序服务器主机(与通常驻留在同一 JVM 中的 servlet 形成对比)。
尝试以一次用户交互导致对 EJB 层的一次调用的方式设计远程接口(interface)。如果您的独立应用程序运行得足够快,那么 servlet 可能也足够快。如果反过来,您可能会发现适用于 servlet 的界面设计不适合远程访问。
local 和remote interface 之间存在一些语义和技术上的差异:使用第一个意味着接口(interface)被设计为只能从本地主机使用(这么多调用并不会真正影响性能)。本地 bean 只存在于一个 JVM 中。它会影响有关按值/引用调用的行为(请参阅 Why do we need separate Remote and Local interfaces for EJB 3.0 session beans)。
关于 NetBeans 屏幕截图:
(远程)客户端 在其范围内具有远程接口(interface)。没关系,因为它不需要看到任何其他东西。
在服务器/EJB 端,还有其他一切:EJB 和本地接口(interface)。唯一似乎缺少的是远程接口(interface),因为 EJB 也实现了它。它背后可能有一些 NetBeans IDE 魔法,但服务器端也需要远程接口(interface)。
关于java - Netbeans 远程项目 (EJB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18110228/