You've there a design mistake. The business service (EJB) tier is not supposed to have any web (JSF) tier related dependencies. Having javax.faces.*
imports in an EJB class is in first place already wrong. It makes the business service unreusable across different web tiers such as JAX-RS, Wicket, Struts, plain servlets, etc. In well designed application servers the unability to reach web tier classes from the EJB tier on is already enforced by (Java EE default) restrictions in classloaders.
Keep the EJB free of JSF dependencies. Perform the desired job in an eagerly initialized application scoped JSF managed bean instead.
@ManagedBean(eager=true)
@ApplicationScoped
public class App {
private List<SelectItem> someItems;
@EJB
private AppService service;
@PostConstruct
public void init() {
// Populate your List<SelectItem> here.
}
}