Greetings. I decided that I wanted to try writing
an XSP page. I know about logicsheets but just to start I figured Id go the
brute force approach. The following is the XSP page.
<?xml version="1.0"
encoding="UTF-8"?>
<xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:jconfer="http://www.jconfer.org/"> <xsp:structure> <xsp:include>javax.naming.InitialContext</xsp:include> <xsp:include>javax.naming.NamingException</xsp:include> <xsp:include>javax.rmi.PortableRemoteObject</xsp:include> <xsp:include>java.util.Collection</xsp:include> <xsp:include>java.util.Set</xsp:include> <xsp:include>java.util.Iterator</xsp:include> <xsp:include>java.util.Properties</xsp:include> <xsp:include>jconfer.data.Smiley</xsp:include> <xsp:include>mirror.datafetch.DataFetch</xsp:include> <xsp:include>mirror.datafetch.DataFetchHome</xsp:include> </xsp:structure> <jconfer:page> <xsp:logic> try { InitialContext ictxt = new InitialContext(); <message><xsp:expr>ictxt.getNameInNamespace()</xsp:expr></message> DataFetchHome dfHome = (DataFetchHome)PortableRemoteObject.narrow( ictxt.lookup("JConfer/DataFetch"), DataFetchHome.class); DataFetch dataFetch = dfHome.create(); Collection smileys = dataFetch.performQuery(Smiley.class, null, null, null, null, "code ascending"); Iterator iter = smileys.iterator(); Smiley tgtSmiley = null; <xsp:element> <xsp:param name="name"><xsp:expr>"smiley"</xsp:expr></xsp:param> while (iter.hasNext()) { tgtSmiley = (Smiley)iter.next(); <xsp:attribute name="code"><xsp:expr>tgtSmiley.getCode()</xsp:expr></xsp:attribute> <xsp:attribute name="code"><xsp:expr>tgtSmiley.getDescription()</xsp:expr></xsp:attribute> } </xsp:element> } catch (Exception ex) { <message><xsp:expr>ex.getMessage()</xsp:expr></message> } </xsp:logic> </jconfer:page> </xsp:page>
This page is basically a copy of a generator that
DOES work .. SHown below.
package jconfer.client.generators;
import java.io.IOException;
import java.util.Collection; import java.util.Date; import java.util.Enumeration; import java.util.Iterator; import java.util.Map; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.rmi.PortableRemoteObject; import javax.servlet.http.HttpServletRequest; import jconfer.data.Smiley; import mirror.datafetch.DataFetch; import mirror.datafetch.DataFetchHome; import org.apache.avalon.framework.parameters.Parameters; import org.apache.cocoon.ProcessingException; import org.apache.cocoon.environment.ObjectModelHelper; import org.apache.cocoon.environment.Request; import org.apache.cocoon.environment.SourceResolver; import org.apache.cocoon.generation.AbstractGenerator; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; /** Handles a command for getting an admin screen
for forum smileys.
* * <p><b><small>Current CVS Tag: $Name$</b></small></p> * @version $Revision$ * @author $author$ */ public class SmileyAdminView extends GeneratorBase { /** {@inheritDoc} */
public void generateContent() throws Exception { DataFetchHome dfHome = (DataFetchHome)jndiLookup(DataFetchHome.class, "JConfer/DataFetch"); DataFetch dataFetch = dfHome.create(); // -- Collection smileys = dataFetch.performQuery(Smiley.class, null, null, null, null, "code ascending"); // -- AttributesImpl attributes = new AttributesImpl(); Smiley tgtSmiley = null; // -- Start the content this.contentHandler.startElement("", "smiley-admin-view", "smiley-admin-view", EMPTY_ATTRS); // -- Do internal elements. Iterator iter = smileys.iterator(); while (iter.hasNext()) { tgtSmiley = (Smiley)iter.next(); attributes.clear(); attributes.addAttribute("", "code", "code", "", tgtSmiley.getCode()); attributes.addAttribute("", "description", "description", "", tgtSmiley.getDescription()); this.contentHandler.startElement("", "smiley", "smiley", attributes); this.contentHandler.endElement("", "smiley", "smiley"); } // -- End the document this.contentHandler.endElement("", "smiley-admin-view", "smiley-admin-view"); } } The problem is that when I try to run the XSP page,
the compiler freaks out and cannot find any of the Mirror or JConfer classes. It
gives me a class not found on all of them. However the generator works. These
classes are deployed in another package and therefore are available to the
classloader of the application server but somehow cocoon isnt seeing them. Is
there any way I can tell cocoon that they are there? We know they are available
because the generator does in fact work.
-- Robert
|
- Re: XSP Compiler Issue: Class Not found Robert Simmons
- Re: XSP Compiler Issue: Class Not found Robert Simmons