Weld registers a built-in Bean per each bean archive (e.g. for javax.enterprise.event.Event, java.security.Principal, etc.) and also creates a proxy class for each such bean (the proxy class name contains the bean id). As a result, there are several redundant proxy classes generated. It should be safe to share a proxy class for all the beans of the same type (e.g. all EventBean instances).