将无状态 EJB 注入命名 Bean



遵循教程并遇到了问题。 系统:野蝇10,具有多模块的maven项目,包装:耳朵

EJB:

@Stateless
public class ToyService implements ToyServiceRemote, ToyServiceLocal {
...
}

接口:

@Local
public interface ToyServiceLocal {
...
}

豆:

@Named("toyProducts")
@RequestScoped
public class ProductBean {
@Inject
private ToyServiceLocal toyService;
@PostConstruct
public void initialize() {
toyList = toyService.getAllToys();
}
...
}

JSF:

<ui:repeat value="#{toyProducts.toyList}" var="toy">
...
</ui:repeat>

应用程序部署,但是当我尝试在浏览器中打开页面时,我得到:

错误 [io.undertow.request](默认任务 62)UT005023:异常 处理对/index.xhtml的请求:javax.servlet.ServletException: Can 未设置com.example.common.service.ToyServiceLocal 字段 shop.beans.ProductBean.toyService to com.example.product.service.ToyServiceLocal$ToyServiceRemote$1303029808$Proxy$_$$_Weld$EnterpriseProxy$ at javax.faces.webapp.FacesServlet.service(FacesServlet.java:671) 野蝇实验 | 在 io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 野蝇实验 | 在 io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 野蝇实验 | 在 io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ...

这次我找到了"真正的"答案:因为我使用的是多模块 maven 项目,打包为 EAR(带有一些 EJB、一个通用的 JAR 和 WAR 文件)。我所要做的就是添加 WAR 文件中提供的范围(常见的是 JAR 和 EJB 中的产品)

<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>product</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>

最新更新