Installation instructions: ========================== 0) Make sure to have Payara 4.1.2.181 installed AND have javax.faces.jar REPLACED with version 2.3.9 (2.4.0 seem to be a little to new) as the WAR project requires JSF 2.3 (not JSF 2.2 what is shipped with Payara). Paraya is currently required as a @NamedCache annotation alongside @Inject is being used to inject the cache into the backing bean. The server.log should reveal a line with "Initializing Mojarra 2.3.9". If that is the case, half way is done and you can continue. Hint: "grep" on it! A common mistake is to copy the required JARs not to ~/personal_domain/lib/ (or where ever your domain's lib path is) as the required JARs varies from EJB/WAR project. The easiest but single-host deployment is to build the EAR project by doing a "ant dist" in THIS project's root directory. For the EJB projects, any EJB 3.0/JPA 2.2 container SHOULD work, Payara 4.1 has been tested/used by myself. 1) Create an empty database and setup proper permissions and user account. You should create a separate database and user for each project you are going to run on it for maximum security. 2) Setup a JDBC pool. This is an example for a MariaDB JDBC driver, a SQLite3 database resource works surely differently (other URL, user/password can be anything non-empty). I would recommend SQLite3 for development (up to 1 mio. records with almost no performance drop) and MariaDB/PostreSQL (later not tested by myself) or any other DBMS (including MongoDB) for the "productive" installation as this project only imports from the javax.persistence package and not EclipseLink/Hibernate/DataNucleus specific packages. Pool name: JJobsPool Resource type: java.sql.Driver Driver: MariaDB Driver class: org.mariadb.jdbc.Driver URL: jdbc:mariadb://localhost/your_database user: your_login password: your_password 3) Setup a JDBC resource: JNDI name: jdbc/jjobs Pool name: JJobsPool 4) You DO have to copy A LOT JARs from my project's directories, including my custom JARs as they contain the entity classes, custom exceptions, utility classes, event classes/interfaces and many required more. Plus you also need to copy all 3rd-party JARs or else it will end with the all-famous NoClassDefError. If you forgot this file to copy and you have copied it now, please restart the Glassfish server so the JAR can be found and loaded. 5) Setup a JMS connection factory: JNDI name: jms/jjobs-queue-factory Resource type: javax.jms.QueueConnectionFactory 6) Setup JMS message queue: JNDI name: jms/jjobs-email-queue Physical destination name: jjobsSendEmail Resource type: javax.jms.Queue 7) Setup Java Mail session: JNDI name: jjobsSmtpSession Mail host: Default user: Default sender address: noreply@your-domain.example Optional, but more secure/sometimes required advanced properties: mail.smtp.host : (localhost is default) mail.smtp.password : mail.smtp.port : mail.smtp.auth : true 8) Setup JMS message queue JNDI name: jms/jjobs-user-activity-log Physical destination name: jjobsUserActivityLog Resource type: javax.jms.Queue 9) From the WAR project, copy local_xx_XX.properties-dist to local_de_DE.properties and local_en_US.properties. If for example your application uses product_categories from jproduct-core, you may want to add your custom i18n strings to the local properties files as this doesn't cause any later merge conflicts as they are added to .gitignore file.