Search code examples
springjsfjpaweblogicweblogic12c

deploying jsf jpa web application in weblogic 12.1.1


i am developping a web application using Maven , JSF 2.2 ,JSTL 1.2.1 , JPA 2.1 , Spring 4.2.9, Hibernate-jpa-api-2.1 i can deploy my application in Tomcat and run it without problems , but i want deploy in weblogic 12.1.1 as well but i got some problems starting my app server :

nested exception is java.lang.NoSuchMethodError : javax.persistance.Table.indexes()[Ljavax/persistence/Index; .... org.springframework.beans.factory.BeanCreationException : Error creatin bean with name 'myEmf' defined in class path resource [jpaConfig.xml] .... Error javax.entreprise.resource.webcontainer.jsf.application

i have created a weblogic.xml in my deployed war like this :

<prefer-application-packages> 
   <package-name>javax.faces.*</package-name> 
   <package-name>com.sun.faces.*</package-name> 
   <package-name>com.bea.faces.*</package-name> 
   </prefer-application-packages> 
 
   <prefer-application-resources> 
   <resource-name>javax.faces.*</resource-name> 
   <resource-name>com.sun.faces.*</resource-name> 
   <resource-name>com.bea.faces.*</resource-name> 
 
<resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
</prefer-application-resources>


Solution

  • The error message "java.lang.NoSuchMethodError" indicates a library collision with the JPA 2.0 Library of Weblogic. Since you are packing your own library for that, try adding "javax.persistence.*" to the weblogic.xml


    Option 2: Add the JPA 2.1 Support to weblogic classpath

    In your domain/bin/setDomainEnv (.cmd for windows, .sh for unix) add a PRE_CLASSPATH Variable. On a windows System this would look like this:

    set PRE_CLASSPATH=C:/weblogic_12130/oracle_common/modules/javax.‌​persistence_2.1.jar;‌​C:/weblogic_12130/wl‌​server/modules/com.o‌​racle.weblogic.jpa21‌​support_1.0.0.0_2-1.‌​jar