2010-10-27 36 views
2

我正在使用Eclipse 3.6和Jboss 4.2。我用两个模块创建了企业应用程序,EJB和WEB。无法在GWT ServiceImpl中注入EJB(JBoss 4.2)

我已经将WEB模块转换为GWT应用程序(并添加了必要的文件 - HTML和CSS)。

问题是,当我需要使用@EJB批注在GWTServiceImpl servlet中注入远程或本地接口时,以及在JBoss上部署应用程序并使用默认浏览器(即Web模式或prod模式)启动应用程序时, ,我得到NullPointerException,说SLSB接口为空。这意味着没有注射发生。

回答

1

前段时间我用Glassfish v3遇到了同样的问题(没有发生针对@EJB字段的注入)。就我而言,事实证明,问题在于GWT默认使用版本2.3的部署描述符。当我将其更改为2.5(或更新版本)时,它工作正常。 JBoss 4.2支持Servlet 2.5,所以你应该可以使用类似的东西:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     id="WebApp_ID" 
     version="2.5"> 

    ... 

</web-app> 
+0

我仔细地改变了它,但并不是不行! – 2010-10-27 14:33:55

+0

@Mohammed:如果它在将项目转换为GWT应用程序之前有效,那么随着部署(ear,war,ejb-jar)必须更改 - 因为@EJB在GWT的RemoteServiceServlets中工作,就像在任何Servlet中一样GWT 2.0.3)。 – 2010-10-28 06:15:12