<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2193931376427169334</id><updated>2026-03-25T08:44:08.195+01:00</updated><category term="Persistence"/><category term="Hibernate"/><category term="JSF"/><category term="AS 7"/><category term="Seam"/><category term="AS 6"/><category term="Mojarra"/><category term="PrettyFaces"/><category term="PrimeFaces"/><category term="RichFaces"/><category term="Security"/><category term="Tomcat 6"/><category term="mod_cluster"/><title type='text'>Seam Space - Seam 3, Richfaces 4 and JSF 2</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-3172136534899740960</id><published>2011-10-04T15:18:00.002+02:00</published><updated>2011-10-04T15:18:32.578+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Seam"/><title type='text'>Seam 3.1.0.Beta3 Release</title><content type='html'>Seam 3.1.0.Beta3 has been tagged, and the artifacts have been released on the JBoss Nexus repository. Please report any bugs or problems to the Seam Forums.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/3172136534899740960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/10/seam-310beta3-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/3172136534899740960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/3172136534899740960'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/10/seam-310beta3-release.html' title='Seam 3.1.0.Beta3 Release'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-1359614836317221479</id><published>2011-10-02T00:38:00.000+02:00</published><updated>2011-10-04T15:19:15.078+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><category scheme="http://www.blogger.com/atom/ns#" term="Tomcat 6"/><title type='text'>Prevent .DS_Store file access on Tomcat 6</title><content type='html'>The .DS_Store file is a Mac OS X file which provides information about folder content. This file will be created by the Mac OS X Finder. Attacker can obtain sensitive information about your system if this file is accessible via your Tomcat web server.

To solve this security vulnerability go to your server.xml and add the following line:

&lt;pre style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%&quot;&gt;&lt;code&gt;&amp;lt;Context path=&amp;quot;.DS_Store&amp;quot; docBase=&amp;quot;&amp;quot;&amp;gt;
    &amp;lt;Valve className=&amp;quot;org.apache.catalina.valves.RemoteAddrValve&amp;quot; deny=&amp;quot;*&amp;quot; /&amp;gt;
&amp;lt;/Context&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

So the full host configuration should be looking similiar to this:

&lt;pre style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%&quot;&gt;&lt;code&gt;&amp;lt;Host appBase=&amp;quot;webapps&amp;quot; autoDeploy=&amp;quot;false&amp;quot; name=&amp;quot;localhost&amp;quot; unpackWARs=&amp;quot;false&amp;quot; xmlNamespaceAware=&amp;quot;false&amp;quot; xmlValidation=&amp;quot;false&amp;quot;&amp;gt;
    &amp;lt;Context path=&amp;quot;.DS_Store&amp;quot; docBase=&amp;quot;&amp;quot;&amp;gt;
        &amp;lt;Valve className=&amp;quot;org.apache.catalina.valves.RemoteAddrValve&amp;quot; deny=&amp;quot;*&amp;quot; /&amp;gt;
    &amp;lt;/Context&amp;gt;
&amp;lt;/Host&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

Now restart the Tomcat Server, place a &quot;.DS_Store&quot; file into your application and try to download it. You should receive a http status 404.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/1359614836317221479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/prevent-dsstore-file-access-on-tomcat-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/1359614836317221479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/1359614836317221479'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/prevent-dsstore-file-access-on-tomcat-6.html' title='Prevent .DS_Store file access on Tomcat 6'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-3424992476485915421</id><published>2011-10-01T15:23:00.000+02:00</published><updated>2011-10-04T15:23:20.383+02:00</updated><title type='text'>IronJacamar 1.1.0.Alpha2 Release</title><content type='html'>IronJacamar 1.1.0.Alpha2 has been released &lt;a href=&quot;http://in.relation.to/Bloggers/IronJacamar110Alpha2IsOut&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/3424992476485915421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/10/ironjacamar-110alpha2-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/3424992476485915421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/3424992476485915421'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/10/ironjacamar-110alpha2-release.html' title='IronJacamar 1.1.0.Alpha2 Release'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-3508766031931502525</id><published>2011-09-15T16:24:00.004+02:00</published><updated>2011-09-15T16:24:58.613+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Persistence"/><title type='text'>Hibernate Search 4.0.0.Beta1 Release</title><content type='html'>
Hibernate Search 4.0.0.Beta1 has been released &lt;a href=&quot;http://in.relation.to/Bloggers/HibernateSearch400Beta1&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/3508766031931502525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/hibernate-search-400beta1-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/3508766031931502525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/3508766031931502525'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/hibernate-search-400beta1-release.html' title='Hibernate Search 4.0.0.Beta1 Release'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-5162803196262353616</id><published>2011-09-15T10:27:00.001+02:00</published><updated>2011-09-15T10:27:02.637+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Persistence"/><title type='text'>Hibernate Core 4.0.0.CR3 Release</title><content type='html'>Hibernate Core 4.0.0.CR3 has been released &lt;a href=&quot;http://in.relation.to/Bloggers/HibernateCore400CR3Release&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/5162803196262353616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/hibernate-core-400cr3-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/5162803196262353616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/5162803196262353616'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/hibernate-core-400cr3-release.html' title='Hibernate Core 4.0.0.CR3 Release'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-3891672815154801639</id><published>2011-09-08T18:50:00.000+02:00</published><updated>2011-09-08T20:47:54.529+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS 7"/><category scheme="http://www.blogger.com/atom/ns#" term="JSF"/><category scheme="http://www.blogger.com/atom/ns#" term="Mojarra"/><title type='text'>Problems with Mojarra</title><content type='html'>In recent Mojarra versions, there was always a problem. &lt;b&gt;JBoss AS 7&lt;/b&gt; comes with Mojarra version &lt;b&gt;2.0.4-b09&lt;/b&gt;. Once the tag &lt;b&gt;a4j:ajax&lt;/b&gt; will be used on JSF components you receive the following error message:&lt;br /&gt;
&lt;pre style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%&quot;&gt;&lt;code&gt;javax.faces.FacesException: Unexpected error restoring state for component with id form:inputComponent:input.  Cause: java.lang.ClassCastException: javax.faces.component.StateHolderSaver cannot be cast to [Ljava.lang.Object;.
    at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:273)
    at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1485)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1496)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1496)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1496)
    at javax.faces.component.UIForm.visitTree(UIForm.java:335)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1496)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1496)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1496)
    at com.sun.faces.component.visit.VisitUtils.doFullNonIteratingVisit(VisitUtils.java:75)
    at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:257)
    at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:181)
    at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:448)
    at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)
    at com.ocpsoft.pretty.faces.application.PrettyViewHandler.restoreView(PrettyViewHandler.java:109)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:187)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:111)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:118)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    at org.jboss.seam.servlet.exception.CatchExceptionFilter.doFilter(CatchExceptionFilter.java:65)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    at org.jboss.seam.servlet.event.ServletEventBridgeFilter.doFilter(ServletEventBridgeFilter.java:72)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139)
    at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57)
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassCastException: javax.faces.component.StateHolderSaver cannot be cast to [Ljava.lang.Object;
    at org.ajax4jsf.component.behavior.AjaxBehavior.restoreState(AjaxBehavior.java:343)
    at javax.faces.component.UIComponentBase.restoreBehaviors(UIComponentBase.java:2056)
    at javax.faces.component.UIComponentBase.restoreBehaviorsState(UIComponentBase.java:2023)
    at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1443)
    at javax.faces.component.UIOutput.restoreState(UIOutput.java:256)
    at javax.faces.component.UIInput.restoreState(UIInput.java:1379)
    at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:265)
    ... 51 more&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;The workaround&lt;/b&gt;&lt;br /&gt;
The best way to solve this problem, is to switch Mojarra version back to &lt;b&gt;2.0.2-b10&lt;/b&gt;. Download the package from the Mojarra repository. Extract zip file and drop the &lt;b&gt;jsf-impl-2.0.2-b10.jar&lt;/b&gt; into:&lt;br /&gt;
&lt;pre style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%&quot;&gt;&lt;code&gt;/your/path/jboss-as-web-7.0.1.Final/modules/com/sun/jsf-impl/main 
&lt;/code&gt;&lt;/pre&gt;Change the &lt;b&gt;module.xml&lt;/b&gt; in the same directory to:&lt;br /&gt;
&lt;pre style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%&quot;&gt;&lt;code&gt;&amp;lt;module xmlns=&amp;quot;urn:jboss:module:1.0&amp;quot; name=&amp;quot;com.sun.jsf-impl&amp;quot;&amp;gt;
    &amp;lt;dependencies&amp;gt;
        &amp;lt;module name=&amp;quot;javax.faces.api&amp;quot;/&amp;gt;
        &amp;lt;module name=&amp;quot;javaee.api&amp;quot;/&amp;gt;
        &amp;lt;module name=&amp;quot;javax.servlet.jstl.api&amp;quot;/&amp;gt;
        &amp;lt;module name=&amp;quot;org.apache.xerces&amp;quot; services=&amp;quot;import&amp;quot;/&amp;gt;
        &amp;lt;module name=&amp;quot;org.apache.xalan&amp;quot; services=&amp;quot;import&amp;quot;/&amp;gt;
    &amp;lt;/dependencies&amp;gt;

    &amp;lt;resources&amp;gt;
        &amp;lt;resource-root path=&amp;quot;jsf-impl-2.0.2-b10.jar&amp;quot;/&amp;gt;
    &amp;lt;/resources&amp;gt;
&amp;lt;/module&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Why not the lastest version?&lt;/b&gt;&lt;br /&gt;
Currently the latest Mojarra version doesn&#39;t invoke Seam Faces &lt;b&gt;s:viewAction&lt;/b&gt; methods. Lets cross fingers and hope this issue will be fixed with the upcoming 2.2.0 version.&lt;br /&gt;
&lt;br /&gt;
Important Links:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://javaserverfaces.java.net&quot;&gt;Mojarra website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://issues.jboss.org/browse/SEAMFACES-179&quot;&gt;SEAMFACES-179&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/3891672815154801639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/mojarra-in-trouble.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/3891672815154801639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/3891672815154801639'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/mojarra-in-trouble.html' title='Problems with Mojarra'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-5787694858158299676</id><published>2011-09-08T18:41:00.000+02:00</published><updated>2011-09-08T18:41:23.310+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS 6"/><category scheme="http://www.blogger.com/atom/ns#" term="AS 7"/><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Persistence"/><title type='text'>Upgrade Hibernate Core 3.6 to 4.0</title><content type='html'>Be careful with updating Hibernate Core 3.6 to 4.0 with &lt;b&gt;MySQL&lt;/b&gt; as database and strategy &lt;b&gt;GenerationType.AUTO&lt;/b&gt;. For me it was an update of JBoss AS 6 (Hibernate 3.6) to AS 7 (Hibernate 4). If you have mapped tables like this:
&lt;pre style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%&quot;&gt;&lt;code&gt;@Id
@GeneratedValue(strategy = GenerationType.AUTO)&lt;/code&gt;&lt;/pre&gt;
Hibernate 3.6 uses the auto increment functionality to increment the id. But Hibernate 4 creates a sequence table and uses this to increment the id. Even if you say sequences are ok, you will run into exceptions on a given database, since Hibernate tries to save the first object with id 1 which already exists.

Better change the strategy to:
&lt;pre style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%&quot;&gt;&lt;code&gt;@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)&lt;/code&gt;&lt;/pre&gt;

Now both Hibernate versions will create the table structure in the same way.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/5787694858158299676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/upgrade-hibernate-core-36-to-40.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/5787694858158299676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/5787694858158299676'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/upgrade-hibernate-core-36-to-40.html' title='Upgrade Hibernate Core 3.6 to 4.0'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-8532544288478250311</id><published>2011-09-08T18:27:00.000+02:00</published><updated>2011-09-08T18:28:22.898+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSF"/><category scheme="http://www.blogger.com/atom/ns#" term="PrettyFaces"/><title type='text'>PrettyFaces for SEO-friendly URLs</title><content type='html'>We all know JSF2 out of the box has still disadvantages with RESTFUL URLs. This problem can easily be solved by &lt;a href=&quot;http://ocpsoft.com/prettyfaces/&quot;&gt;PrettyFaces&lt;/a&gt;, which allows SEO-friendly URLs with a simple on annotation based configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;1) Configuration&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Download PrettyFaces binaries and add them to the classpath. If you use Apache Maven, you only need to add PrettyFaces as dependency to your project:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.ocpsoft&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;prettyfaces-jsf2&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.3.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
To ensure maximum flexibility, we configure PrettyFaces on anntotations. The &lt;b&gt;web.xml&lt;/b&gt; parameter &lt;b&gt;com.ocpsoft.pretty.BASE_PACKAGE&lt;/b&gt; tells PrettyFaces which package have to be scanned recursively for beans with &lt;b&gt;@URLMapping&lt;/b&gt; annotation:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;context-param&amp;gt;
    &amp;lt;param-name&amp;gt;com.ocpsoft.pretty.BASE_PACKAGES&amp;lt;/param-name&amp;gt;
    &amp;lt;param-value&amp;gt;your.package.structure&amp;lt;/param-value&amp;gt;
&amp;lt;/context-param&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Congratulations, you have added PrettyFaces to your project successfully. &lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;2) Basic Pages&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now just add @URLMapping&#39;s to your action beans like:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;@Named
@RequestScoped
@URLMapping(id = &quot;startpage&quot;, pattern = &quot;/&quot;, viewId = &quot;/pages/startpage.seam&quot;)
public class StartpageAction implements Serializable 
{
...
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
The annotation based configuration of PrettyFaces keeps the amount of navigation rules in &lt;b&gt;faces-config.xml&lt;/b&gt; small. The new prefix &lt;b&gt;pretty:&lt;/b&gt;, could be used as return string on methods of managed beans or as outcome from &lt;b&gt;h:button&lt;/b&gt; and &lt;b&gt;h:link&lt;/b&gt; components. For a simple reload of the current page just return &lt;b&gt;pretty:&lt;/b&gt;. In case of return &lt;b&gt;pretty:startpage&lt;/b&gt; PrettyFaces search for the annotation based bean with &lt;b&gt;@URLMapping(id = &quot;startpage&quot;, ...&lt;/b&gt; and redirect to this page.&lt;br /&gt;
&lt;br /&gt;
On the JSF side you just need to put the id of the @URLMapping as outcome:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;h:link outcome=&quot;pretty:startpage&quot; value=&quot;Startpage&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;3) Pages With URL Parameters&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Pass additional parameters as URL value isn&#39;t much harder. Just setup the bean:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;@Named
@RequestScoped
@URLMapping(id = &quot;category&quot;, pattern = &quot;/cat/#{catId : boardCategoryAction.catId}.html&quot;, viewId = &quot;/pages/category.seam&quot;)
public class CategoryAction implements Serializable
{
...
    private String catId;
...
    public String getCatId() {
        return catId;
    }

    public void setCatId(String catId) {
        this.catId = catId;
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
And parse the parameter in the &quot;h:link&quot;:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;h:link outcome=&quot;pretty:category&quot; value=&quot;Category&quot;&amp;gt;
    &amp;lt;f:param name=&quot;catId&quot; value=&quot;123&quot; /&amp;gt;
&amp;lt;/h:link&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Was it ever easier to set up pretty URLs? I don&#39;t think so :)&lt;br /&gt;
Thanks to Lincoln and the whole OCPSoft Team.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/8532544288478250311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/prettyfaces-for-seo-friendly-urls.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/8532544288478250311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/8532544288478250311'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/prettyfaces-for-seo-friendly-urls.html' title='PrettyFaces for SEO-friendly URLs'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-534543637949919762</id><published>2011-09-07T12:59:00.000+02:00</published><updated>2011-09-07T12:59:12.286+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSF"/><category scheme="http://www.blogger.com/atom/ns#" term="RichFaces"/><title type='text'>Practical RichFaces second edition is published</title><content type='html'>Learn more about Richfaces 4 &lt;a href=&quot;http://in.relation.to/Bloggers/PracticalRichFacesSecondEditionIsPublished&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/534543637949919762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/practical-richfaces-second-edition-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/534543637949919762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/534543637949919762'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/practical-richfaces-second-edition-is.html' title='Practical RichFaces second edition is published'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-7715897065820097424</id><published>2011-09-07T00:12:00.001+02:00</published><updated>2011-09-07T00:17:12.917+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Persistence"/><title type='text'>Hibernate Core 4.0.0.CR2 Release</title><content type='html'>Hibernate Core 4.0.0.CR2 has been released &lt;a href=&quot;http://in.relation.to/Bloggers/HibernateCore400CR2Release&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/7715897065820097424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/hibernate-core-400cr2-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/7715897065820097424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/7715897065820097424'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/hibernate-core-400cr2-release.html' title='Hibernate Core 4.0.0.CR2 Release'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-6022649403631651743</id><published>2011-09-06T18:43:00.002+02:00</published><updated>2011-09-07T11:59:46.104+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS 7"/><category scheme="http://www.blogger.com/atom/ns#" term="mod_cluster"/><title type='text'>Clustering with JBoss mod_cluster and AS 7</title><content type='html'>Today I want to introduce you to JBoss &lt;a href=&quot;http://www.jboss.org/mod_cluster&quot;&gt;mod_cluster&lt;/a&gt;. The Apache-based load balancer works similiar to mod_jk and mod_proxy, but is much more flexible. New application server nodes will introduce theirselves automatically to mod_cluster at runtime. There is no configuration like the worker.properties on mod_jk.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Why should I use mod_cluster?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Clustering was never easier, mod_cluster can balance heavy traffic on registered application server nodes. The web interface allows to enable or disable single applications for each node. If all nodes went down e.g. updating your application mod_cluster will provide a clean error code 503 (service temporary unavailable) page instead of just the default &lt;b&gt;page is not available&lt;/b&gt; browser view. Another advantage is mod_cluster 1.1.x and AS 7 fits perfect together and work awesome after minimal amount of configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Prepare Jboss AS 7 for clustering&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
First, open the configuration file &lt;b&gt;standalone.xml&lt;/b&gt; of your Jboss AS 7 instance and add modcluster extension and subsystem on the provided sections:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;extension module=&quot;org.jboss.as.modcluster&quot;/&amp;gt;
...
&amp;lt;subsystem xmlns=&quot;urn:jboss:domain:modcluster:1.0&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;Keep in mind to set up the http connector port properly. Since mod_cluster handle all requests for us, the port doesn&#39;t really matter and should be blocked by firewall anyways. The first application node could be run for example on http port 8085, the next one on 8086 and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Quick Start mod_cluster &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The &lt;a href=&quot;http://docs.jboss.org/mod_cluster/1.1.0/html/Quick_Start_Guide.html&quot;&gt;Quick Start Guide&lt;/a&gt; provides simple steps to install mod_cluster on Windows and Linux. After some minutes mod_cluster should run on http port 80 and returns &lt;b&gt;It Works&lt;/b&gt; page on request to &lt;b&gt;http://localhost/&lt;/b&gt;. The upcoming mod_cluster configuration is a bit tricky especially for setting up multiple vhosts. &lt;br /&gt;
&lt;br /&gt;
By default mod_cluster provides the application server cluster in each vhost, means other provided content will disappear as soon as the first application node registered to the mode_cluster manager. If you just want the cluster responding to a specific vhost add this additional parameter to your &lt;b&gt;httpd.conf&lt;/b&gt;:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;CreateBalancers 1
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
The manager listener should be pre-configurated by mod_cluster. Maybe you will have to change the ip address here: &lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;IfModule manager_module&amp;gt;
    Listen 127.0.0.1:6666
    ManagerBalancerName mycluster
 
    &amp;lt;VirtualHost 127.0.0.1:6666&amp;gt; 
        KeepAliveTimeout 300
        MaxKeepAliveRequests 0
        AdvertiseFrequency 5
        ServerAdvertise On
 
        &amp;lt;Location /&amp;gt;
            Order deny,allow
            Allow from 127.0.0
        &amp;lt;/Location&amp;gt;
  &amp;lt;/VirtualHost&amp;gt;
&amp;lt;/IfModule&amp;gt;
&lt;/code&gt;&lt;/pre&gt;Keep in mind to use 127.0.0.1 if all application servers run on the same server as mod_cluster, otherwise use the internal server ip and allow an internal ip address range. &lt;br /&gt;
&lt;br /&gt;
Next step is to configure the vhost for our cluster. The &lt;b&gt;/mod_cluster_manager&lt;/b&gt; location should be only allowed from localhost or internal ip address range:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;NameVirtualHost *:80

&amp;lt;VirtualHost *:80&amp;gt; 
    ServerAdmin info@domain.de
    ServerName www.domain.com
    ServerAlias www.domain.com

    ProxyPass / balancer://mycluster stickysession=JSESSIONID|jsessionid nofailover=On
    ProxyPassReverse / balancer://mycluster
    ProxyPreserveHost On

    &amp;lt;Location /&amp;gt;
        Order deny,allow
        Allow from All
    &amp;lt;/Location&amp;gt;

    &amp;lt;Location /mod_cluster_manager&amp;gt;
        SetHandler mod_cluster-manager
        Order deny,allow
        Deny from all
        Allow from 127.0.0
    &amp;lt;/Location&amp;gt;
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Next we could add additional vhosts. For example add a vhost to provide direct access to file structure (e.g. content repository) for the subdomain &lt;b&gt;static.domain.com&lt;/b&gt;:&lt;br /&gt;
&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
    ServerAdmin info@domain.com
    ServerName static.domain.com
    ServerAlias static.domain.com

    DocumentRoot /PRODUCTION/repository/
    &amp;lt;Directory /PRODUCTION/repository/&amp;gt;
        Options FollowSymLinks
        AllowOverride None
        Order Deny,Allow
        Allow from all
    &amp;lt;/Directory&amp;gt;

    ErrorLog &quot;/PRODUCTION/mod_cluster/httpd/logs/error.log&quot;

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog &quot;/PRODUCTION/mod_cluster/httpd/logs/access.log&quot; combined
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Now start mod_cluster and application server nodes. You will see the following result:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;www.domain.com -&amp;gt;&lt;/b&gt; Request via manager to any application node&lt;br /&gt;
&lt;b&gt;static.domain.com -&amp;gt;&lt;/b&gt; Access to local directory &lt;b&gt;/PRODUCTION/repository/&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Jboss AS 7 and double slash redirect problem&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The current version of mod_cluster has a bug with mixing ProxyPass and ProxyPassReverse, means double slashes occur on faces redirects. For example redirect to &lt;b&gt;/test&lt;/b&gt; resolves in &lt;b&gt;www.mydomain.com//test&lt;/b&gt;. Currently the parameter &lt;b&gt;ProxyPreserveHost On&lt;/b&gt; could be used as workaround. For more informations about this bug follow &lt;a href=&quot;https://issues.jboss.org/browse/MODCLUSTER-250&quot;&gt;MODCLUSTER-250&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Happy clustering :)&lt;br /&gt;
&lt;br /&gt;
Important Links:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.jboss.org/mod_cluster&quot;&gt;JBoss mod_cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.jboss.org/jbossas&quot;&gt;Jboss Application Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/6022649403631651743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/clustering-with-jboss-modcluster-and-as.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/6022649403631651743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/6022649403631651743'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/clustering-with-jboss-modcluster-and-as.html' title='Clustering with JBoss mod_cluster and AS 7'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-2535670656330294144</id><published>2011-09-06T18:42:00.001+02:00</published><updated>2011-09-06T18:54:55.433+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Persistence"/><category scheme="http://www.blogger.com/atom/ns#" term="Seam"/><title type='text'>Accessing database during application initialization</title><content type='html'>In development state most applications need dummy data which should be imported on application initialization. During this phase Seam&#39;s TransactionManager is not initialized yet. This means we have to build our UserTransaction manually:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%&quot;&gt;&lt;code&gt;@PersistenceContext
private EntityManager em;

@Inject
private UserTransaction utx;

public void importData(@Observes @Initialized WebApplication webapp) {
    try {
        utx.begin();
        em.persist(new MyDatabaseEntity());
        utx.commit();
    } catch (Exception e) {
        log.error(&amp;quot;Import failed. Seed data will not be available.&amp;quot;, e);
        try {
            if (utx.getStatus() == Status.STATUS_ACTIVE) {
                try {
                    utx.rollback();
                } catch (Exception rbe) {
                    log.error(&amp;quot;Error rolling back transaction&amp;quot;, rbe);
                }
            }
        } catch (Exception se) {
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/2535670656330294144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/accessing-database-during-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/2535670656330294144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/2535670656330294144'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/accessing-database-during-application.html' title='Accessing database during application initialization'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-4119795656993786788</id><published>2011-09-05T15:40:00.003+02:00</published><updated>2011-09-22T15:19:12.491+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSF"/><category scheme="http://www.blogger.com/atom/ns#" term="PrimeFaces"/><title type='text'>PrimeFaces 3.0.M3 UTF-8 encoding issues</title><content type='html'>&lt;div style=&quot;font-family: inherit;&quot;&gt;Once PrimeFaces 3.0.M3 is added as dependency to the project, utf-8 encoding problems occur on form submits. To avoid these problems you will have to add a custom filter:&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;public class CharacterEncodingFilter implements Filter, Serializable 
{
    private static final long serialVersionUID = -4246457499875267088L;

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        req.setCharacterEncoding(&quot;UTF-8&quot;);
        resp.setCharacterEncoding(&quot;UTF-8&quot;);
        chain.doFilter(req, resp);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void destroy() {
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
Add this part to your web.xml:&lt;/div&gt;&lt;pre style=&quot;background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;&amp;lt;filter&amp;gt;
    &amp;lt;filter-name&amp;gt;Character Encoding Filter&amp;lt;/filter-name&amp;gt;
    &amp;lt;filter-class&amp;gt;com.your.package.to.CharacterEncodingFilter&amp;lt;/filter-class&amp;gt;
&amp;lt;/filter&amp;gt;
&amp;lt;filter-mapping&amp;gt;
    &amp;lt;filter-name&amp;gt;Character Encoding Filter&amp;lt;/filter-name&amp;gt;
    &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;
&amp;lt;/filter-mapping&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
After these changes are made, the utf-8 encoding problems won&#39;t occur anymore.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/4119795656993786788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/primefaces-30m3-utf-8-encoding-issues.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/4119795656993786788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/4119795656993786788'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/primefaces-30m3-utf-8-encoding-issues.html' title='PrimeFaces 3.0.M3 UTF-8 encoding issues'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2193931376427169334.post-6453934476989776732</id><published>2011-09-05T14:50:00.000+02:00</published><updated>2011-09-05T17:47:51.709+02:00</updated><title type='text'>The Beginning</title><content type='html'>&lt;div style=&quot;font-family: inherit;&quot;&gt;Welcome to the &lt;b&gt;Seam Space&lt;/b&gt;. I will be using this blog as a place to hold my knowledge, interests and solutions for common problems.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Who am I?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
My name is Sebastian Sachtleben, a software developer with five years experience of web development. My experience includes Struts, Spring, Seam Framework, Richfaces, Primefaces 3, EJB, JSF, Hibernate etc. I love the direction JEE is taking at the moment and I&#39;m delighted to develop applications with it. My current project is &lt;a href=&quot;http://www.replicascene.de/&quot;&gt;ReplicaScene&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Why did I want to start this blog?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I&#39;ve gained a lot of experience in the past years while developing different projects and I want to share solutions for common problems which may occur in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Final&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Well friends. I&#39;m done. I&#39;ve set up my own blog, and published my first post.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seamspace.blogspot.com/feeds/6453934476989776732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seamspace.blogspot.com/2011/09/beginning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/6453934476989776732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2193931376427169334/posts/default/6453934476989776732'/><link rel='alternate' type='text/html' href='http://seamspace.blogspot.com/2011/09/beginning.html' title='The Beginning'/><author><name>Sebastian Sachtleben</name><uri>http://www.blogger.com/profile/17674855795474271011</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhencGzOnjlYP5mW_7p1DOiUl_y5atAi5-n2pUxKsafOi92GQqgfyp4evx4mZ1PlqfUJ2Oabj6fGH3myxSWcdCE55apYNm-XLmxBocL0_lUriOsfa0nhxstagFwgbw-6Us/s220/Sebastian.jpg'/></author><thr:total>0</thr:total></entry></feed>