gpt4 book ai didi

jakarta-ee - 在 WildFly 上使用本地接口(interface)查找 EJB

转载 作者:行者123 更新时间:2023-12-02 04:45:32 26 4
gpt4 key购买 nike

我有一个具有以下结构的耳朵:

  • 出现
    • 应用程序接口(interface)
    • 应用程序ejb
    • 应用程序网络

app-web 和 app-ejb 依赖于 app-api 模块,但它们并不相互依赖。

接口(interface) (app-api) 和 bean (app-ejb):

package sample.services;

@Remote
public interface SampleServiceRemote{
...
}


package sample.services;

@Local
public interface SampleService extends SampleServiceRemote{
...
}

package sample.services;

@Stateless
@Local(SampleService.class)
@Remote(SampleServiceRemote.class)
public class SampleServiceBean implements SampleService{
...
}

我想从 app-api 和 app-web 模块中查找具有本地和远程接口(interface)的 SampleServiceBean:

InitialContext ic = new InitialContext();

//Case #1: Works fine without any exception
SampleServiceRemote service = (SampleServiceRemote) ic.lookup("java:global/app-ear/app-ejb/SampleServiceBean!sample.services.SampleServiceRemote");

//Case #2: Throws ClassCastException
SampleService service = (SampleService) ic.lookup("java:global/app-ear/app-ejb/SampleServiceBean!sample.services.SampleService");

当我在 WildFly 服务器 (9.0.1.Final) 上查找本地接口(interface)时,它会返回一个无法转换为 SampleService 的 sample.services.SampleService$$$view4 对象。

我在 Glassfish 4.1 上尝试了相同的应用程序,但它运行良好。返回对象:

  • 远程:javax.naming.Reference(可转换为 SampleServiceRemote)
  • 本地:com.sun.ejb.containers.JavaGlobalJndiNamingObjectProxy(可转换为 SampleService)

谁能告诉我,我怎样才能在 WildFly 上实现相同的行为?

更新1

我尝试了 user140547 推荐的解决方案。它没有用。它返回相同的类:/。

更新2

经过几天的尝试和 Google 搜索后,我决定从我的项目中排除 EJB。它们不是必需的,没有它们我也能做到。问题是,当我尝试将 bean 用作 Local 时,Wildfly 总是给我一些 Proxy 类,这些类不能转换为 Local 接口(interface)(也不能转换为 Remote 接口(interface))。我只能使用 @EJB 注释获取本地引用,但在 EJB 模块之外它只返回一个空值:/。

最佳答案

看到这个问题:access a Local Session Bean from another EAR?从另一个应用程序访问本地 bean 似乎是 EJB 的可选功能,因此它可能适用于 Glassfish,但不适用于 Wildfly。

另一方面,您的问题与 EAR 有关。但是,如果这个答案也适用于您,则它与同时提供的 @Remote 接口(interface)没有任何关系。

关于jakarta-ee - 在 WildFly 上使用本地接口(interface)查找 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33401729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com