gpt4 book ai didi

jax-ws - @EJB 注入(inject)失败,但 JNDI 查找在 Glassfish 的 Web 服务类中有效

转载 作者:行者123 更新时间:2023-12-01 06:42:07 28 4
gpt4 key购买 nike

我有一个注入(inject)@EJB 的@WebService 类。 EJB 打包在一个 .jar 文件中,该文件与 Web 服务类在同一个 .war 文件中。 @EJB 注入(inject)总是失败,但我可以在 EJB 上进行 JNDI 查找。我试过制作 EJB 及其接口(interface)@Remote,但这没关系。注入(inject)仍然失败,JNDI 查找仍然有效。

我使用的是 3.0 版 web.xml。 ejb.jar 文件中没有 ejb 部署描述符,但这在 EJB 3.1 中并不重要。

我错过了什么,或者这是 Glassfish 中的错误?

这是我的代码。

EJB 类和接口(interface)打包在 .war 文件中的 .jar 中:

//@Remote
public interface ReportServiceI {

public String testAlive();
}

@Stateless
//@Remote (ReportServiceI.class)
public class ReportService implements ReportServiceI {...}

网络服务类:
@WebService(
targetNamespace = "http://www.reps.corp.com/services/reports/ReportService",
portName="ReportPort",
serviceName="ReportService",
endpointInterface="com.corp.reps.reports.ws.server.ReportServiceWSI")

public class ReportServiceWS implements ReportServiceWSI {

public static Logger logger = Logger.getLogger(ReportServiceWS.class);

// These all fail
// @EJB
// @EJB(beanInterface=ReportServiceI.class)
// @EJB(lookup="java:global/repsreports/ReportService")
ReportServiceI reportService;

public String testAlive() {

// this works
try {
InitialContext context = new InitialContext();
reportService = (ReportServiceI)context.lookup("java:global/repsreports/ReportService");
}
catch (NamingException ex) {
logger.error(ex);

return "InitialContext.lookup() failed.";
}

最佳答案

这是 bug in Glassfish (显然在 Web 服务堆栈中)。

关于jax-ws - @EJB 注入(inject)失败,但 JNDI 查找在 Glassfish 的 Web 服务类中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426322/

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