我创建了一个NetBeans Enterprise应用程序,它包含一个包含ejb(jar)项目和web(war)项目的ear。
我的web项目中有一个servlet,我想使用其中一个来自ejb项目的EJB。
@WebServlet(name = "Shop", urlPatterns = {"/ajax/add_to_cart"})
public class ShoppingCartServlet extends HttpServlet {
@EJB
ShoppingCartFacade shoppingCartFacade
我在NetBeans中收到错误 - "找不到符号"对于ShoppingCartFacade。 Netbeans无法自动找到ShoppingCartFacade的包,即使它位于"兄弟" ejb项目。如果我开始在Servlet中手动输入包名称,即
import com.myproject....
我可以看到唯一可见的包是Web项目本身的包,即
com.myproject.web.my_web_related_package
可见
,而
com.myproject.ejb.my_ejb_related_package
不可见
当然,将EJB注入Web项目必须简单明了,因为拥有单独的ejb和Web项目的全部意义在于,业务逻辑可以放在ejbs中,并从诸如servlet之类的Web资源调用。
那么我应该如何在web(war)应用程序中使用EJB?
答案 0 :(得分:2)
我必须明确声明ejb项目是Web项目的依赖项。如果它是一个常规的NetBeans企业应用程序,它似乎是自动完成的,但如果它是Maven企业应用程序则不然,这是我的情况。
答案 1 :(得分:0)
我认为问题是Maven不知何故不更新它的存储库。您需要首先从本地maven repo中删除所有项目工件,然后依赖于重建。问题就会消失。