As far as I know CDI uses dynamic proxy for non-dependent bean injection. If there is a class that implements some interface there is no problem, example:
@SessionScoped
public class MessageBean implements Message {...}
proxy can be created based on Message interface, but what if the class implements no interface:
@SessionScoped
public class MessageBean {...}
The injection into Servlet still works:
@WebServlet("/example")
public class MessageServlet extends HttpServlet {
@Inject
private MessageBean messageBean;
so the question is how it is handled for example by Weld?