Performance 使用公共服务的不同耳朵。我应该使用远程呼叫,还是将其打包为本地呼叫?

Performance 使用公共服务的不同耳朵。我应该使用远程呼叫,还是将其打包为本地呼叫?,performance,jboss,jakarta-ee,local,Performance,Jboss,Jakarta Ee,Local,我在jboss服务器上部署了多个EJB3 EAR。其中之一是包含公开为远程的公共服务的应用程序。现在所有其他人都通过远程使用这些服务,这对性能来说似乎真的很痛苦 我能做些什么来克服这个问题?我可以将这些服务设置为@Local并将这个jar打包到每个应用程序中,以便通过@Local而不是@Remote使用它们吗?根据,一个@Localbean“的客户端必须与它访问的企业bean在同一个JVM中运行。” 因此,在同一服务器上不同部署的应用程序之间使用本地调用应该没有问题 但是,您确定这是性能问题的原

我在jboss服务器上部署了多个EJB3 EAR。其中之一是包含公开为远程的公共服务的应用程序。现在所有其他人都通过远程使用这些服务,这对性能来说似乎真的很痛苦

我能做些什么来克服这个问题?我可以将这些服务设置为@Local并将这个jar打包到每个应用程序中,以便通过@Local而不是@Remote使用它们吗?

根据,一个
@Local
bean“的客户端必须与它访问的企业bean在同一个JVM中运行。”

因此,在同一服务器上不同部署的应用程序之间使用本地调用应该没有问题

但是,您确定这是性能问题的原因吗?

根据,本地
@Local
bean的客户端“必须与它访问的企业bean在同一JVM中运行。”

因此,在同一服务器上不同部署的应用程序之间使用本地调用应该没有问题


但是,您确定这是性能问题的原因吗?

我不同意。查看此线程,因为它提供了一个很好的说明,说明了为什么不应该:

通常,在EAR之间进行本地调用的唯一方法是进行跨类加载器调用。不漂亮

您可以通过在每台服务器上使用一个类加载器来解决这个问题(而不是通过ear确定作用域)。出于安全/隔离原因,这也是一个坏主意


你应该在耳朵之间使用远程通话。当在同一个jvm中调用时,一些JavaEE实现会优化这些调用以提高效率。

我不同意。查看此线程,因为它提供了一个很好的说明,说明了为什么不应该:

通常,在EAR之间进行本地调用的唯一方法是进行跨类加载器调用。不漂亮

您可以通过在每台服务器上使用一个类加载器来解决这个问题(而不是通过ear确定作用域)。出于安全/隔离原因,这也是一个坏主意


你应该在耳朵之间使用远程通话。当在同一jvm中调用时,一些JavaEE实现会优化这些调用以提高效率。

我同意您的观点,您不能使用本地接口从另一个ear在同一jvm中注入ejb会话bean

如果您有两个ear,则必须使用远程接口,并使用:
@EJB(lookup=“JNDI\u BEAN\u NAME”)

我同意您的看法,您不能使用本地接口从另一个ear在同一jvm中注入EJB会话BEAN

如果您有两个ear,则必须使用远程接口,并使用: @EJB(lookup=“JNDI\u BEAN\u NAME”)