【问题标题】:EJB remote application-clientEJB 远程应用程序客户端
【发布时间】:2011-04-20 10:49:02
【问题描述】:

我正在开始一个新的企业项目,并将Glassfish 3 用作应用程序服务器,将NetBeans 6.9 用作IDE。我有一些EJBs 想从桌面Swing 应用程序远程访问。 AFAIK 有两个选项 - 使用普通的 JNDI 查找或在应用程序客户端容器中运行 Swing 应用程序并使用 @EJB 注释。我成功地尝试了第一个选项,但我必须复制所有 glassfish 库以满足依赖项(大约 50MB,我觉得不正常)。现在我尝试第二个选项。在NetBeans 中,我创建了一个新的Enterprise Application Client 项目,将EJB 项目添加为依赖项并按运行。我收到以下异常:Sniffers with type [ejb] and type [appclient] should not claim the archive at the same time。现在,如果我在应用程序客户端的项目属性中删除 EJB 项目旁边的 package 复选框,我的远程接口会出现不同的 ClassNotFound 异常。

我觉得有点卡住了:( 有经验的人可以告诉我他们如何使用Glassfish 3 远程访问他们的 EJB?正如我上面所写的,我使用第一个选项成功了,但是 50MB 太多了我对一个简单的客户的看法。

编辑:如果您在远程服务器上的ejbs 中有业务逻辑,您会选择哪种方法进行客户端的部署和远程访问?

感谢您的任何建议!

祝你一切顺利,佩塔

【问题讨论】:

  • 您下载的是完整版还是只下载了网页配置文件? “嗅探器”是 glassfish 容器的一部分,当您部署 jar 文件时,它会确定启动哪个容器。它自省 jar 文件以查找诸如 web.xml 等的告示文件。由于 sniffer 抱怨无法找到 ejb 容器,我猜你可能已经下载了 web 配置文件。尝试获得“全平台”
  • 我下载了完整版,我认为客户端容器在抱怨,因为它找到了两个东西 - ejb 和应用程序客户端,但它不知道要运行哪个。但是我怎么能引用我的 ejb 项目呢?!!!
  • 我不确定你的问题出在哪里,但如果你给我你的电子邮件,我会寄给你一个样本供你查看
  • @Chuk 非常感谢!在这里 - petar.minchev(at)gmail.com 只需确保您的示例保证客户端没有安装 Glassfish 服务器。如果您向我发送一个示例,包括应用程序客户端容器并且没有它(完全独立),我会很高兴。
  • @Chuk - 我现在感觉自己像个笨蛋:(问题是我在应用程序客户端上单击了运行,然后 Netbeans 给出了嗅探器异常。但是如果我在耳朵上单击运行,那么一切都很好:)

标签: java netbeans glassfish ejb application-client


【解决方案1】:

我认为在您的情况下最好的方法是在您的服务器中创建一个 Servlet(或其他一些简单的组件)并让这个人与您的 EJB 对话。如果您选择这种情况,您将隔离您的客户端/服务器通信和您的业务逻辑实现。

【讨论】:

  • 感谢您的回答。但是我选择了 EJB,因此通过定义良好的@Remote 接口进行远程通信更容易。另外我不会有 Web GUI,为什么要创建一个 servlet 并使用 HTTP 通信?是不是太低级了,太人工了?
  • 是的。但是如果你想避免所有的应用服务器依赖,我认为这可能是一种方法。当然,最好的方法是与客户端应用程序中的所有依赖项进行真正的 EJB 通信。在某些情况下,这可能是个问题(我有一个 87MB 的客户端 WebStart 应用程序,但我们的客户在专用网络中使用它,所以这里不是问题)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多