Combine Seam 2.2 and Icefaces 1.8
hannibalhh Sep 17, 2012 9:43 AMHi
Ich have to combine Seam 2.2 and Icefaces 1.8 on Jboss 5.1, Java 1.5
Versions cant be changed. Perhaps Seam 2.1.1 is an option.
I useEclipse 3.5 with Jboss Tools and Dynamic Web Project Wizard.
I took an Seam 2.2 Proect modified with Icefaces 1.8, Icefaces Facelet 1.8, Facelet 1.0, Dynamic web Module (2.5)
auogenerate web.xml
Librarys:
Icefaces Core 1.8.2
Icefacs Faclet 1.8.2
Support Library 1.8.2
JSF 1.2 Mojarra JSF API Implementation 1.2_015_b01 fcs
Seam 2.2
deploy as war
H2 database with jdbc h2dialect
and icefaces example page
Notice that i could run Seam 2.2 pure and Icefaces 1.8 pure.
But not both in one project.
renderManager is included:
component.xml
<?xml version="1.0" encoding="UTF-8"?> <components xmlns="http://jboss.com/products/seam/components" xmlns:core="http://jboss.com/products/seam/core" xmlns:persistence="http://jboss.com/products/seam/persistence" xmlns:drools="http://jboss.com/products/seam/drools" xmlns:bpm="http://jboss.com/products/seam/bpm" xmlns:security="http://jboss.com/products/seam/security" xmlns:mail="http://jboss.com/products/seam/mail" xmlns:web="http://jboss.com/products/seam/web" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.2.xsd http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.2.xsd http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.2.xsd http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.2.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.2.xsd http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.2.xsd http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.2.xsd http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd"> <core:init debug="true" jndi-pattern="@jndiPattern@" /> <component scope="APPLICATION" auto-create="true" name="renderManager" class="com.icesoft.faces.async.render.RenderManager" /> <core:manager concurrent-request-timeout="500" conversation-timeout="120000" conversation-id-parameter="cid" parent-conversation-id-parameter="pid" /> <!-- Make sure this URL pattern is the same as that used by the Faces Servlet --> <web:hot-deploy-filter url-pattern="*.seam" /> <!-- If you are still using JBoss 4, uncomment this to have your PU started --> <!-- <persistence:entity-manager-factory name="entityManagerFactory" --> <!-- persistence-unit-name="frozenseamHelpedByJBOSS"/> --> <!-- If you are still using JBoss 4, uncomment this to have the entityManagerFactory ysed --> <!-- <persistence:managed-persistence-context name="entityManager" auto-create="true" --> <!-- entity-manager-factory="#{entityManagerFactory}"/> --> <persistence:managed-persistence-context name="entityManager" auto-create="true" persistence-unit-jndi-name="java:/frozenseamHelpedByJBOSSEntityManagerFactory" /> <drools:rule-base name="securityRules"> <drools:rule-files> <value>/security.drl</value> </drools:rule-files> </drools:rule-base> <security:rule-based-permission-resolver security-rules="#{securityRules}" /> <security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true" /> <event type="org.jboss.seam.security.notLoggedIn"> <action execute="#{redirect.captureCurrentView}" /> </event> <event type="org.jboss.seam.security.loginSuccessful"> <action execute="#{redirect.returnToCapturedView}" /> </event> <mail:mail-session host="localhost" port="25" /> <!-- For use with jBPM pageflow or process management --> <!-- <bpm:jbpm> <bpm:process-definitions></bpm:process-definitions> <bpm:pageflow-definitions></bpm:pageflow-definitions> </bpm:jbpm> --> </components>
web faces.xml with view icefaces handler
<?xml version="1.0" encoding="UTF-8"?> <faces-config 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-facesconfig_1_2.xsd" version="1.2"> <application> <view-handler>com.icesoft.faces.facelets.D2DFaceletViewHandler</view-handler> <locale-config> <default-locale>en</default-locale> <supported-locale>bg</supported-locale> <supported-locale>de</supported-locale> <supported-locale>en</supported-locale> <supported-locale>fr</supported-locale> <supported-locale>tr</supported-locale> </locale-config> </application> </faces-config>
web.xml with com.icesoft.faces.util.event.servlet.ContextEventRepeater and and State saving method "server"
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.5" 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_2_5.xsd"> <display-name>frozenseamHelpedByJBOSS</display-name> <context-param> <param-name>com.icesoft.faces.synchronousUpdate</param-name> <param-value>false</param-value> </context-param> <context-param> <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>server</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.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <context-param> <param-name>facelets.DEVELOPMENT</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <context-param> <description>To allow multiple windows for a single application.</description> <param-name>com.icesoft.faces.concurrentDOMViews</param-name> <param-value>false</param-value> </context-param> <context-param> <description>Turn on/off application-wide synchronous or asynchronous updates. </description> <param-name>com.icesoft.faces.synchronousUpdate</param-name> <param-value>false</param-value> </context-param> <context-param> <description>Google Maps API key is required if gMap component is used. Sign up for an API key from http://code.google.com/apis/maps/signup.html</description> <param-name>com.icesoft.faces.gmapKey</param-name> <param-value>ABQIAAAADlu0ZiSTam64EKaCQr9eTRTOTuQNzJNXRlYRLknj4cQ89tFfpxTEqxQnVWL4k55OPICgF5_SOZE06A</param-value> </context-param> <context-param> <param-name>com.icesoft.faces.uploadDirectory</param-name> <param-value>upload</param-value> </context-param> <context-param> <param-name>com.icesoft.faces.uploadMaxFileSize</param-name> <param-value>4048576</param-value> </context-param> <filter> <filter-name>Seam Filter</filter-name> <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class> </filter> <filter-mapping> <filter-name>Seam Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>com.sun.faces.config.ConfigureListener</listener-class> </listener> <listener> <listener-class>org.jboss.seam.servlet.SeamListener</listener-class> </listener> <listener> <listener-class>com.icesoft.faces.util.event.servlet.ContextEventRepeater</listener-class> </listener> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>Seam Resource Servlet</servlet-name> <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class> </servlet> <servlet> <servlet-name>Persistent Faces Servlet</servlet-name> <servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>Blocking Servlet</servlet-name> <servlet-class>com.icesoft.faces.webapp.xmlhttp.BlockingServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>uploadServlet</servlet-name> <servlet-class>com.icesoft.faces.component.inputfile.FileUploadServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Seam Resource Servlet</servlet-name> <url-pattern>/seam/resource/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Persistent Faces Servlet</servlet-name> <url-pattern>*.iface</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Blocking Servlet</servlet-name> <url-pattern>/block/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>uploadServlet</servlet-name> <url-pattern>/uploadHtml</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <security-constraint> <display-name>Restrict raw XHTML Documents</display-name> <web-resource-collection> <web-resource-name>XHTML</web-resource-name> <url-pattern>*.xhtml</url-pattern> </web-resource-collection> <auth-constraint/> </security-constraint> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app>
I know this not very good site:
http://seamframework.org/Documentation/UsingICEFacesWithJBossToolsGeneratedProjects
- Generate a Seam Web Project in JBoss Tools (procedure should be similar for both EAR and WAR deployment)
i do it
- Generate a seam-gen-icefaces project somewhere
i do it (described above)
- Copy the web.xml, faces-config.xml and components.xml from the seam-gen-icefaces project to your JBoss Tools project, replacing them (OK, you actually only need the view-handler from faces-config.xml and the renderManager from components.xml)
No Problem
- Remove the jsf-facelets.jar and richfaces*.jar from the JBoss Tools project library folder (OK, the richfaces jars should be pretty harmless but you might as well remove them)
No Problem.
- Add the icefaces-comps.jar, icefaces-facelets.jar and icefaces.jar to the JBoss Tools project (location depends on if you generated a WAR or EAR based project)
As Web or normal libries?
- Add the backport-util-concurrent.jar and commons-fileupload.jar to the JBoss Tools project (same thing about the EAR/WAR selection)
- Copy the home.xhtml from the seam-gen icefaces project to your JBoss Tools project for a semi-working test
Why I cant make a Seam 2.2 project with Icefaces Libaries? Is that not the same?
If I want a pure Icefaces 1.8 project I have to delete the
jsf-api.jar, jsf-impl.jar
https://community.jboss.org/thread/141903
If I do this in the seam gen Icefaces project, i get a dependecy error (i delete in war file, because in the project there is nothing).
If I do it not, I get a configuration error.
for example: Error configuring application listener of class org.apache.myfaces.webapp.StartupServletContextListener
I hope someone have an idea!
Dear
hannibal