将无状态EJB注入命名Bean

时间:2017-05-25 23:07:35

标签: jsf java-ee ejb

遵循教程并遇到问题。 系统:wildfly 10,maven项目,多模块,包装:耳朵

EJB:

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

INTERFACE:

@Local
public interface ToyServiceLocal {
...
}

BEAN:

@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:可以   没有设置com.example.common.service.ToyServiceLocal字段   shop.beans.ProductBean.toyService to   com.example.product.service.ToyServiceLocal $ ToyServiceRemote $一三零三零二九八零八$代理$ _ $$ _焊接$ EnterpriseProxy $   在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)   ...

1 个答案:

答案 0 :(得分:0)

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

module A
    extend C

    class << self
        def initializer
            puts "initialize() of Module A"         
        end
    end

    add_initializer(->{initializer})
end