Keep in mind these best practices when  developing shared Java EE libraries and optional packages:    Use shared Java EE Libraries when you want to share  one or more Java EE modules (EJBs, Web Applications, Enterprise Applications, or  plain Java classes) with multiple Enterprise Applications.  If you need to deploy a standalone Java EE module,  such as an EJB JAR file, as a shared Java EE library, package the module within  an Enterprise Application. Doing so avoids potential URI conflicts, because the  library URI of a standalone module is derived from the deployment name.  If you choose to deploy a shared Java EE library as a  standalone Java EE module, always specify a known deployment name during  deployment and use that name as the URI in referencing applications.  Use optional packages when multiple Java EE archive  files need to share a set of Java classes.  If you have a set of classes that must be available to  applications in an entire domain, and you do not frequently upda...