JBoss EAP 6.x is based on JEE 6. But as JPA 2.1 is part of the JEE 7 Spec, it will not be possible to directly deploy applications built using JPA 2.1 in JBoss EAP 6.x.
However, with the following workaround we can make this possible. You need to include a ‘jboss-deployment-structure.xml’ with the following content inside the WEB-INF folder of your war file,
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <exclude-subsystems> <subsystem name="jpa" /> </exclude-subsystems> <exclusions> <module name="javaee.api" /> <module name="javax.persistence.api" /> <module name="org.hibernate" /> </exclusions> <dependencies> <module name="javax.activation.api" export="true"/> <module name="javax.annotation.api" export="true"/> <module name="javax.ejb.api" export="true"/> <module name="javax.el.api" export="true"/> <module name="javax.enterprise.api" export="true"/> <module name="javax.enterprise.deploy.api" export="true"/> <module name="javax.inject.api" export="true"/> <module name="javax.interceptor.api" export="true"/> <module name="javax.jms.api" export="true"/> <module name="javax.jws.api" export="true"/> <module name="javax.mail.api" export="true"/> <module name="javax.management.j2ee.api" export="true"/> <module name="javax.resource.api" export="true"/> <module name="javax.rmi.api" export="true"/> <module name="javax.security.auth.message.api" export="true"/> <module name="javax.security.jacc.api" export="true"/> <module name="javax.servlet.api" export="true"/> <module name="javax.servlet.jsp.api" export="true"/> <module name="javax.transaction.api" export="true"/> <module name="javax.validation.api" export="true"/> <module name="javax.ws.rs.api" export="true" services="export"/> <module name="javax.xml.bind.api" export="true"/> <module name="javax.xml.registry.api" export="true"/> <module name="javax.xml.soap.api" export="true"/> <module name="javax.xml.ws.api" export="true"/> <module name="javax.api" export="true"/> </dependencies> </deployment> </jboss-deployment-structure>