IceFaces & Seam problem with classloader
[Logo]
ICEsoft.org Forums: ICEfaces, ICEmobile, ICEpdf
[Search] Search   [Recent Topics] Recent Topics   [Groups] Home Page | www.icefaces.org  [Register] Register  [Login] Login 
IceFaces & Seam problem with classloader  XML
Forum Index -> JBoss Seam Integration
Author Message
Gabcia

Joined: 22/11/2006 00:00:00
Messages: 16
Offline


Hi all,
I posted question to Seam forum but it looks they can't tell me...:/
I have problem with integration Seam and Ice Faces. Like in booking example in seam i created new app project and following configuration can't load libraries, question is why?
Here is my problem:

Code:
 23:06:00,708 WARN  [ServiceController] Problem creating service jboss.j2ee:service=EJB3,module=exper
 tEJB.jar
 java.lang.NoClassDefFoundError: com/icesoft/faces/component/paneltabset/TabChangeListener
 	at java.lang.ClassLoader.defineClass1(Native Method)
 	at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
 	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
 	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
 	at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
 	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
 	at java.security.AccessController.doPrivileged(Native Method)
 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 


and

Code:
 23:06:10,793 ERROR [URLDeploymentScanner] Incomplete Deployment listing:
 
 --- MBeans waiting for other MBeans ---
 ObjectName: jboss.j2ee:service=EJB3,module=expertEJB.jar
   State: FAILED
   Reason: java.lang.NoClassDefFoundError: com/icesoft/faces/component/paneltabset/TabChangeListener
 
 --- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
 ObjectName: jboss.j2ee:service=EJB3,module=expertEJB.jar
   State: FAILED
   Reason: java.lang.NoClassDefFoundError: com/icesoft/faces/component/paneltabset/TabChangeListener
 


application.xml nad (el files are included
Code:
 	<module>
 		<ejb>expertEJB.jar</ejb>
 	</module>	
 	<module>
 	    <java>jboss-seam.jar</java>
 	</module>
     <module>
         <java>el-api.jar</java>
     </module>
     <module>
         <java>el-ri.jar</java>
     </module>
 


also in war file/WEB-INF/lib/ have following libs
Code:
 commons-fileupload.jar 
 icefaces.jar 
 icefaces-comps.jar
 icefaces-facelets.jar 
 jboss-seam-debug.jar 
 jboss-seam-ui.jar 
 oscache-2.3.2.jar 
 


finally I setted true in
\server\default\deploy\jbossweb-tomcat55.sar\META-INF
jboss-service.xml

seam booking example working fine, but my new project created based on booking can't load libs, why?
Can anyone help me?

my web.xml

Code:
     <listener>        <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
     </listener>
     
     <context-param>
         <param-name>javax.faces.CONFIG_FILES</param-name>
         <param-value>/WEB-INF/navigation.xml</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.faces.DEFAULT_SUFFIX</param-name>
         <param-value>.xhtml</param-value>
     </context-param>
 
     <context-param>
         <param-name>facelets.DEVELOPMENT</param-name>
         <param-value>true</param-value>
     </context-param>
 
     <context-param>        <param-name>com.icesoft.faces.doJSFStateManagement</param-name>
         <param-value>true</param-value>
     </context-param> 
 
     <context-param>
         <param-name>com.icesoft.faces.actionURLSuffix</param-name>
         <param-value>.seam</param-value>
     </context-param>
 
     <context-param>        <param-name>com.icesoft.faces.synchronousUpdate</param-name>
         <param-value>true</param-value>
     </context-param>
 
     <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>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>Persistent Faces Servlet</servlet-name>
         <servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
     </servlet>
 
   <servlet-mapping>
     <servlet-name>Persistent Faces Servlet</servlet-name>
     <url-pattern>/xmlhttp/*</url-pattern>
   </servlet-mapping>
 
   <servlet-mapping>
     <servlet-name>Persistent Faces Servlet</servlet-name>
     <url-pattern>*.iface</url-pattern>
   </servlet-mapping>
 
   <!-- Blocking Servlet Mapping -->
   <servlet-mapping>
     <servlet-name>Blocking Servlet</servlet-name>
     <url-pattern>/block/*</url-pattern>
   </servlet-mapping>
 
     <!-- Faces Servlet Mapping -->
     <servlet-mapping>
         <servlet-name>Persistent Faces Servlet</servlet-name>
         <url-pattern>*.seam</url-pattern>
     </servlet-mapping>
     
      <!-- MyFaces -->
     <listener>           <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
     </listener>
  
     <session-config>
 	<session-timeout>30</session-timeout>
     </session-config> 
 
buddy1974

Joined: 29/12/2006 00:00:00
Messages: 10
Offline


Hi,

it seems as if you need to access the icefaces components inside your beans. In this case you have to modify your application.xml to llok like...

Code:
 <?xml version="1.0" encoding="UTF-8"?>
 <application 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/application_5.xsd"
              version="5">
     
    <display-name>Seam Generated Application</display-name>
 
    <module>
       <web>
          <web-uri>app.war</web-uri>
          <context-root>/app</context-root>
       </web>
    </module>
    <module>
        <java>jboss-seam.jar</java>
    </module>   
    <module>
       <ejb>app.jar</ejb>
    </module>   
    <module>
       <java>jbpm-3.1.2.jar</java>
    </module>
    <module>
       <java>el-api.jar</java>
    </module>
    <module>
       <java>el-ri.jar</java>
    </module>
    <module>
       <java>icefaces-facelets.jar</java>
    </module>
    <module>
       <java>icefaces.jar</java>
    </module>
    <module>
       <java>icefaces-comps.jar</java>
    </module>
    <module>
       <java>commons-fileupload.jar</java>
    </module>    
 </application>
 


then move the icefaces libs inside your lib folder inside your project and modify your build.xml around line 112 (target ear) and modify it to look like...

Code:
 	<target name="ear" description="Build the EAR">
 		<copy todir="${ear.dir}">
 			<fileset dir="${basedir}/resources">
 				<include name="*jpdl.xml" />
 				<include name="hibernate.cfg.xml" />
 				<include name="jbpm.cfg.xml" />
 			</fileset>
 			<fileset dir="${lib.dir}">
 				<include name="jboss-seam.jar" />
 				<include name="jbpm*.jar" />
 				<include name="el-*.jar" />
 			    <include name="icefaces*.jar" />
 			    <include name="commons-fileupload.jar" />
 			</fileset>
 		</copy>
 		<copy todir="${ear.dir}/META-INF">
 			<fileset dir="${basedir}/resources/META-INF">
 				<include name="application.xml" />
 				<include name="jboss-app.xml" />
 			</fileset>
 		</copy>
 	</target>
 


Kind regards

Juergen
gus315

Joined: 14/11/2006 00:00:00
Messages: 158
Offline


You need to go into Code:
jboss-4.0.5.GA\server\default\deploy\jbossweb-tomcat55.sar\META-INF\jboss-service.xml	

and change the following line:Code:
<attribute name="UseJBossWebLoader">false</attribute>

to: Code:
<attribute name="UseJBossWebLoader">true</attribute>

This problem was discussed in Seam forum.
buddy1974

Joined: 29/12/2006 00:00:00
Messages: 10
Offline


Hi san_gu,

i Think he already did this:


finally I setted true in
\server\default\deploy\jbossweb-tomcat55.sar\META-INF
jboss-service.xml
 


Kind regards

Juergen
gector

Joined: 15/12/2006 00:00:00
Messages: 27
Offline


I have the same problem. Has anyone solved this problem?
I've tried many variations of moving icefaces jars as well as myfaces jars
around in my project and in jboss.
Any ideas? Or does this need to be added to the JIRA?

JR
philip.breau


Joined: 08/05/2006 00:00:00
Messages: 2672
Offline


Hi JR,

Have you added the icefaces jars to the application.xml file?

Philip

.
gector

Joined: 15/12/2006 00:00:00
Messages: 27
Offline


Hi Philip,

Yes, I have added the icefaces jars:

Code:
 <?xml version="1.0" encoding="UTF-8"?>
 <application xmlns="http://java.sun.com/xml/ns/j2ee"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.4"
 	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
 	<display-name>CPPMS</display-name>
 	<module>
 		<web>
 			<web-uri>cppms.war</web-uri>
 			<context-root>/cppms</context-root>
 		</web>
 	</module>
 	<module>
 		<ejb>cppms.jar</ejb>
 	</module>
 	<module>
 		<java>jboss-seam.jar</java>
 	</module>
 	<module>
 		<java>util.jar</java>
 	</module>
 	<module>
 		<java>el-api.jar</java>
 	</module>
 	<module>
 		<java>el-ri.jar</java>
 	</module>
 	<module>
        <java>icefaces-facelets.jar</java>
     </module>
     <module>
        <java>icefaces.jar</java>
     </module>
     <module>
        <java>icefaces-comps.jar</java>
     </module>
  	<module>
 		<java>dfc.jar</java>
 	</module>
 	<module>
 		<java>dfcbase.jar</java>
 	</module>
 </application>
 
 


And I get this error when trying to load my login page:

Code:
 13:15:57,718 ERROR [JspPageToDocument] Can't find TLD for location [http://www.icesoft.com/icefaces/component]. JAR cont
 aining the TLD may not be in the classpath


Noting special about this page, here it is:

Code:
 
 <f:view xmlns:h="http://java.sun.com/jsf/html"
         xmlns:f="http://java.sun.com/jsf/core"
         xmlns:ice="http://www.icesoft.com/icefaces/component"
         xmlns:s="http://jboss.com/products/seam/taglib">
 
     <ice:outputDeclaration doctypeRoot="HTML"
                            doctypePublic="-//W3C//DTD HTML 4.01 Transitional//EN"
                            doctypeSystem="http://www.w3.org/TR/html4/loose.dtd"/>
 
     <html>
     <head>
         <meta http-equiv="Content-Type"
               content="text/html; charset=iso-8859-1"></meta>
         <title>CPPMS</title>
         <link href="./xmlhttp/css/xp/xp.css" rel="stylesheet"
               type="text/css"/>
     </head>
 
     <body>
     <h2>CPPMS Login Page</h2>
     <ice:form>
 
 		<f:loadBundle basename="gov.dot.marad.web.MessageBundle" var="bundle"/>
 			<s:validateAll>
 			<ice:outputLabel for="username" > <ice:outputText value="#{bundle.user_name_label}"> </ice:outputText>	</ice:outputLabel>
 			<ice:inputText id="username" required="true" autocomplete="true" value="#{users.username}"></ice:inputText> 
 			<br/>
 			<ice:outputLabel for="password" ><ice:outputText value="#{bundle.user_password_label}"></ice:outputText></ice:outputLabel>	
 			<ice:inputSecret id="password" autocomplete="true" redisplay="false" required="true"  value="#{users.password}"></ice:inputSecret>
 			</s:validateAll>
 			<ice:messages showDetail="true"/>
 			<br/>
 			<ice:commandButton id="submit" action="#{login.login}" value="#{bundle.login_button_label}"></ice:commandButton>
             
     </ice:form>
     </body>
     </html>
 </f:view>
 


I'm using the latest production icefaces and seam.
Is there a way to fix this?

JR
philip.breau


Joined: 08/05/2006 00:00:00
Messages: 2672
Offline


Try extracting the tld files from the icefaces-comps.jar and sticking them in your war file's WEB-INF directory.

.
gector

Joined: 15/12/2006 00:00:00
Messages: 27
Offline


That worked. Thanks!
ted.goddard

Joined: 26/10/2004 00:00:00
Messages: 684
Offline



I have verified this workaround with a test application. UseJBossWebLoader is a server-specific, global change to classloading. Any feedback on whether applying this setting is acceptable long-term?
[Email]
ted.goddard

Joined: 26/10/2004 00:00:00
Messages: 684
Offline



"UseJBossWebLoader" is not necessary, provided that the ICEfaces jars are not included in the WEB-INF/lib of the web application.
[Email]
gector

Joined: 15/12/2006 00:00:00
Messages: 27
Offline


If you are using Seam, you may also need to move the jboss-seam-ui and jboss-seam-debug jars, which means you have to extract the taglib.tld, which causes this unpleasant side effect in eclipse:


Code:
Invalid content was found starting with element 'description'. One of '{"http://java.sun.com/xml/ns/j2ee":type}' is expected.

 
Forum Index -> JBoss Seam Integration
Go to:   
Powered by JForum 2.1.7ice © JForum Team