gpt4 book ai didi

ejb - 如何将 EJB 注入(inject) SOAPHandler?

转载 作者:行者123 更新时间:2023-12-04 15:01:12 29 4
gpt4 key购买 nike

我的 JAX-WS war 包含以下条目。

WEB-INF/lib/
WEB-INF/beans.xml // empty
WEB-INF/lib/commons-logging-1.1.1.jar
WEB-INF/lib/corrs-beans-1.0-alpha-1-SNAPSHOT.jar // EJBs are here
WEB-INF/lib/corrs-entities-1.0-alpha-1-SNAPSHOT.jar
WEB-INF/lib/joda-time-1.6.2.jar
WEB-INF/lib/opensaml-2.5.1-1.jar
WEB-INF/lib/openws-1.4.2-1.jar
WEB-INF/lib/slf4j-api-1.6.1.jar
WEB-INF/lib/wss4j-1.6.8.jar
WEB-INF/lib/xmlsec-1.5.3.jar
WEB-INF/lib/xmltooling-1.3.2-1.jar
WEB-INF/web.xml
META-INF/maven/
META-INF/maven/kr.co.ticomms.corrs/
META-INF/maven/kr.co.ticomms.corrs/corrs-services/
META-INF/maven/kr.co.ticomms.corrs/corrs-services/pom.xml
META-INF/maven/kr.co.ticomms.corrs/corrs-services/pom.properties

我的一个 SOAPHandlers 试图调用 EJB。

@HandlerChain(file=...)
@WebService(...)
public class MyService {
}

public class MyHandler implements SOAPHandler<SOAPMessageContext> {

@Override
public boolean handleMessage(final SOAPMessageContext context) {
// MyEJB null
}

@Inject
private MyEJB myEJB; // << NULL
}

MyEJB 只是一个非接口(interface) View EJB。

@LocalBean
@Stateless
public class MyEJB {
}

谁能告诉我如何将 EJB 注入(inject) SOAPHandlers?

更新/(也许)回答

我改了 @Inject@EJB它有效。

有什么方法可以使用 @Inject ?恕我直言,我看起来更好。 :)

最佳答案

如果我没记错的话,SOAPHandler s 在 Web 服务调用之前被调用。根据 CDI 规范(参见 scopes and contexts),在 Web 服务上下文中,所有正常范围仅在 Web 服务调用期间处于事件状态。除了所有正常范围之外,还有 @Dependent伪作用域。除非另有说明,否则这是默认范围。它的生命周期取决于正常范围之一,因此不能单独存在。

现在,一个无状态的 EJB,因为它没有 CDI 相关的注解,它自动是 @Dependent并且不能在正常范围不活动的任何地方注入(inject)(使用 @Inject )。在您的情况下,在 SOAPHandler 内没有事件范围,因此您不能使用 @Inject .

使用@EJB , 没有错。

关于ejb - 如何将 EJB 注入(inject) SOAPHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14099350/

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