【问题标题】:Call an ejb entity class from an independent web application (netbeans)从独立的 Web 应用程序(netbeans)调用 ejb 实体类
【发布时间】:2013-06-01 13:53:01
【问题描述】:

我正在为 Netbeans 的学校制作一个小型网上商店应用程序。我在 EJB 模块中有一个 Customer 实体类,还有一个本地会话 bean 和一个远程会话 bean。

接下来我有一个独立的 web 应用程序,它当然可以调用远程会话 bean。

从应用程序中,我可以调用远程会话 bean 中的方法来为我提供所有客户。但是会话 bean 应该返回什么?

  • 它可以返回客户列表,但我的应用程序不知道客户类别。我应该在应用程序中添加我的 ejb 模块的 jar 吗?
  • 我可以返回包含所有客户信息的列表列表,但这不是很好。
  • 我读过一些here 的内容,内容是在 Web 应用程序中拥有一个客户界面,但我不明白它是如何工作的。
  • 是否有助于制作企业应用程序并添加 ejb 模块的 jar 和 web 应用程序的战争?

什么是最好的选择?

(哦,我正在使用 wicket 作为框架,如果这与此有关)

编辑:

所以我的设置是这样的:

  • 一个包含实体类和远程bean接口的库
  • 一个包含远程bean和实体类外观的ejb模块,它也有上面的库
  • Web 应用程序:也有库
  • 包含ejb-jar 和war 的企业应用程序。

但它不起作用。当我部署耳朵时,我收到此错误:

Error in annotation processing: java.lang.NoClassDefFoundError: shop2/database/customer/CustomerBeanRemote

我不确定将持久性文件放在哪里。现在它在 ejb 模块中。但我不认为这实际上是问题所在。

你能指导我完成这个项目吗?这是我第一次使用 EJB 和 Java EE。

谢谢!

【问题讨论】:

    标签: jakarta-ee web-applications netbeans ejb


    【解决方案1】:

    您必须创建一个包含所有实体和接口的客户端项目,并在 EJB 模块和 Web 项目中使用该项目。

    在这种情况下,您可以使用远程接口将客户列表返回到 Web 项目

    当然,你必须将ejb项目+客户端项目部署在一个ear项目中。

    【讨论】:

    • 所以我把我的接口和我的实体放在一个 java 库而不是一个客户端项目中。 Web 应用程序已经需要它来了解 ejb 调用。这是你的意思还是我需要改变什么?
    • 这不起作用,因为持久性不在库中。我会试试客户端。
    • java 库与客户端项目相同,我的意思是接口它是您的 ejb 会话 bean 的远程接口,然后当您在 web 项目中添加此库时,您不需要参考ejb 项目。在您可以通过声明远程接口并使用此注释来注入 ejb 会话 bean 之后:@EJB(lookup ="JNDI_SESSIONBEAN_NAME")
    • 还是不行。我不知道该怎么办。我在问题中添加了更多信息。你能看一下吗?谢谢!
    • 您确定在ear项目中添加了库吗?
    猜你喜欢
    • 2012-03-25
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多