JSF (PrimeFaces) and Spring data MongoDB Integration
pom.xml of the project
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelversion>4.0.0</modelVersion>
<groupid>com.borislam</groupId>
<artifactid>mongoShop</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>MongoShop Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupid>org.jboss.el</groupId>
<artifactid>com.springsource.org.jboss.el</artifactId>
<version>2.0.0.GA</version>
</dependency>
<dependency>
<groupid>org.primefaces.themes</groupId>
<artifactid>all-themes</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupid>org.primefaces</groupId>
<artifactid>primefaces</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupid>commons-beanutils</groupId>
<artifactid>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupid>commons-codec</groupId>
<artifactid>commons-codec</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupid>org.apache.directory.studio</groupId>
<artifactid>org.apache.commons.lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupid>commons-digester</groupId>
<artifactid>commons-digester</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupid>commons-collections</groupId>
<artifactid>commons-collections</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupid>org.apache.myfaces.core</groupId>
<artifactid>myfaces-api</artifactId>
<version>2.1.9</version>
</dependency>
<dependency>
<groupid>org.apache.myfaces.core</groupId>
<artifactid>myfaces-impl</artifactId>
<version>2.1.9</version>
</dependency>
<dependency>
<groupid>org.mongodb</groupId>
<artifactid>mongo-java-driver</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupid>junit</groupId>
<artifactid>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupid>org.springframework.data</groupId>
<artifactid>spring-data-mongodb</artifactId>
<version>1.0.3.RELEASE</version>
</dependency>
<dependency>
<groupid>org.springframework</groupId>
<artifactid>spring-context</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupid>org.springframework</groupId>
<artifactid>spring-web</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
<repository>
<id>com.springsource.repository.bundles.release</id>
<name>SpringSource Enterprise Bundle Repository - SpringSource Releases</name>
<url>http://repository.springsource.com/maven/bundles/release</url>
</repository>
<repository>
<id>com.springsource.repository.bundles.external</id>
<name>SpringSource Enterprise Bundle Repository - External Releases</name>
<url>http://repository.springsource.com/maven/bundles/external</url>
</repository>
<repository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>apache.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>https://repository.apache.org/content/repositories/snapshots</url>
</repository>
<repository>
<id>jboss-deprecated-repository</id>
<name>JBoss Deprecated Maven Repository</name>
<url>https://repository.jboss.org/nexus/content/repositories/deprecated/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatepolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatepolicy>never</updatePolicy>
</snapshots>
</repository>
</repositories>
<build>
<finalname>mongoShop</finalName>
</build>
</project>
MyFaces
MyFaces is used as the JSF implementation in this application. The following details should be added in web.xml
PrimeFaces Theme
As said before, PrimeFaces library is used to enhance the UI. There is nearly no configuration required for this library. PrimeFaces provides many pre-designed theme for your web application. In our case, we use “blue-sky” theme. We just add the following setting in web.xml
<context-param>
<param-name>primefaces.THEME</param-name><param-value>glass-x</param-value></context-param>
JSF and Spring Integration:
To integrate JSF with Spring, you have to specify the SpringBeanFacesELResolver in Faces-config.xml
Faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
<factory>
<partial-view-context-factory>org.primefaces.context.PrimePartialViewContextFactory</partial-view-context-factory>
</factory>
</faces-config>
Full web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name><param-value>WEB-INF/spring-application-context.xml</param-value></context-param>
<context-param>
<param-name>errorPageUrl</param-name><param-value>/pages/systemError.do</param-value></context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name><param-value>false</param-value></context-param>
<context-param>
<param-name>facelets.REFRESH_PERIOD</param-name><param-value>2</param-value></context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name><param-value>client</param-value></context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name><param-value>resources.application</param-value></context-param>
<context-param>
<param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name><param-value>true</param-value></context-param>
<context-param>
<param-name>org.apache.myfaces.AUTO_SCROLL</param-name><param-value>false</param-value></context-param>
<context-param>
<param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name><param-value>false</param-value></context-param>
<context-param>
<param-name>org.apache.myfaces.ERROR_HANDLING</param-name><param-value>false</param-value></context-param>
<context-param>
<param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name><param-value>org.jboss.el.ExpressionFactoryImpl</param-value></context-param>
<context-param>
<param-name>org.apache.myfaces.PRETTY_HTML</param-name><param-value>false</param-value></context-param>
<context-param>
<param-name>primefaces.THEME</param-name><param-value>glass-x</param-value></context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>org.apache.myfaces.webapp.MyFacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
MongoDB connection Details
In to order connect to MongoDB, you have to register a MongoDbFactory instance in XML. The connection details is specified in spring-application-context.xml
spring-application-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
http://www.springframework.org/schema/data/repository
http://www.springframework.org/schema/data/repository/spring-repository.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.2.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.borislam"/>
<mongo:mongo host="localhost" port="27017">
<mongo:options
connections-per-host="5"
connect-timeout="30000"
max-wait-time="10000"
write-number="1"
write-timeout="0"
write-fsync="true"/>
</mongo:mongo>
<mongo:db-factory dbname="test" mongo-ref="mongo"/>
<mongo:repositories base-package="com.borislam.repository" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo"/><constructor-arg name="databaseName" value="test"/></bean>
</beans>
Part 4 of the tutorial ...
Comments
I have write a small webapp with myfaces+ primefaces and i use the component.
I have deployed on tomee server that came with myfaces implemntation of jsf2.
But i get the error that the app not can start.
I have put int oweb-inf/lib also the common-io.jar and fileuplod.jar fro mapache for upload.
but from the log i get :
18-apr-2013 18.28.53 org.apache.catalina.core.StandardContext listenerStart
GRAVE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! org.primefaces.context.PrimePartialViewContextFactory
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:351)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:220)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.InstantiationException: org.primefaces.context.PrimePartialViewContextFactory
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:600)
at javax.faces.FactoryFinder.getImplementationInstance(FactoryFinder.java:468)
at javax.faces.FactoryFinder.access$400(FactoryFinder.java:135)
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:792)
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:302)
at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:290)
at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:209)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:332)
you can help me please?
tank you mauro
Wonderful blog and this is the best explaination for this topic...!
Soft Skills Training in Chennai
best soft skills training in chennai
Appium Training in Chennai
Appium Certification in Chennai
JMeter Training in Chennai
Graphic Design Courses in Chennai
Pega Training in Chennai
Power BI Training in Chennai
Linux Training in Chennai
Tableau Training in Chennai
Spark Training in Chennai
vé máy bay đi Mỹ bao nhiêu tiền
cách mua vé máy bay giá rẻ từ mỹ về việt nam
lịch bay từ anh về việt nam hôm nay
giá vé máy bay từ pháp về việt nam