我想知道 Jee6 在执行时是否支持依赖注入...
我可能涉及多个概念,所以我尝试描述我想要的架构
- 一个包含接口的 jar
公共接口你好{公共字符串说();}
引用接口的战争(所以接口 Hello jar 被打包在 WEB-INF/lib 中)
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Inject @Any
Instance<Hello> hello;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println(hello.iterator().next().say());
}
好的,所以我可以解决任何问题
基本上我希望该接口有多个生产者
@Named
public class HelloImpl implements Hello {
@Override
public String say() {
// TODO Auto-generated method stub
return "TEST";
}
}
如此简单,但现在我不知道如何使这个可模块化(可以在运行时添加或删除实现):
如果我将实现放在一个war文件中,它会在另一个上下文中运行吗?
如果我把它放在 jar 文件中,我需要把它放在第一次战争 WEB-INF 中才能使用它吗?我可以在执行过程中动态添加或删除 jar,我猜不是……或者是的,它对类加载器和卸载 jar 文件不太熟悉
最好的问题,如果所有这些都可以完成,是否有任何方法可以将jar 上的 r* aise 事件添加到 web-inf/lib 和/或删除?
可以说我还没有准备好去 OSGI,但我的问题可能会被该技术的某些功能所掩盖,如果可以的话,我只想留在 jee6..
谢谢