我有一个注入 @EJB 的 @WebService 类。 EJB 打包在 .jar 文件中,该文件与 Web 服务类位于同一个 .war 文件中。 @EJB 注入总是失败,但我可以在 EJB 上进行 JNDI 查找。我尝试过将 EJB 及其接口设置为 @Remote,但这并不重要。注入仍然失败,JNDI 查找仍然有效。
我使用的是 3.0 版本的 web.xml。 ejb.jar 文件中没有 ejb 部署描述符,但这在 EJB 3.1 中并不重要。
我遗漏了一些东西还是 Glassfish 中的错误?
这是我的代码。
EJB类和接口打包在.jar中的.war文件中:
//@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.";
}
这是一个Glassfish 中的错误 http://java.net/jira/browse/GLASSFISH-18406(显然在 Web 服务堆栈中)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)