Java beans are reusable components, and there is no strict specification for Java beans, and in theory, any Java class can be a bean. Typically, however, because Java beans are created by containers (such as Tomcat), the Java bean should have a parameterless constructor, and in addition, Java beans typically implement the serializable interface for the persistence of the bean. Java beans actually correspond to local in-process COM components in the Microsoft COM model, which cannot be accessed across processes. Enterprise Java beans are equivalent to DCOM, a distributed component. It is Java based remote method call (RMI) technology, so EJBS can be accessed remotely (across processes, across computers). But EJBs must be in containers such as Webspere, WebLogic, and EJB clients never directly access the real EJB components, but through their containers. The EJB container is the proxy for the EJB component, which is created and managed by the container. The customer accesses the real EJB component through the container.