ZongoZongo wrote:
Hi

I have a Problem to import a javaclass in flowscript. The poblem doesnt
arise with simple javaclasses. The code is tested and works in the eclipse
enviroment. Ok, now the sourcecode:

##########################
package de.doccollector.binding;

import de.doccollector.*;
import java.sql.*;
import java.util.Vector;
import java.util.Iterator;

public class ManageObjects{
        
        public static Objects load(Objects objects){
                Vector vector = new Vector();
                //create DB connection
                JDBCConnection  conn = new JDBCConnection();
                try{
                        Statement stat = conn.getStatement();
                        ResultSet rset = stat.executeQuery("SELECT name FROM 
Object WHERE
entrance=0");
                        while(rset.next()){
                                vector.add(rset.getString("name"));
                        }
                        
                }
                catch (SQLException sqle){
                        System.err.println(sqle);
                }
                conn.close();
                objects.setObjectList(vector);
                return objects;
        }
        
        public static void save(Objects objects){
                Vector vector = objects.getObjectList();
                JDBCConnection conn = new JDBCConnection();
                try{
                        Statement stat = conn.getStatement();
                        stat.executeUpdate("UPDATE Objects SET entrance=0");
                        
                        Iterator iterator = vector.iterator();
                        while(iterator.hasNext()){
                                String objectName = (String)iterator.next();
                                stat.executeUpdate("UPDATE Objects SET entrance=1 WHERE 
name=\"" +
objectName +"\"");
                        }
                }
                catch (SQLException sqle){
                        System.err.println(sqle);
                }
        }
}
###################

This class takes a javabean and loades and saves the fields respectively. I
call this in flowscript as follows:

###################
var objectBean = new Packages.de.doccollector.binding.Objects();
        
        importClass(Packages.de.doccollector.binding.ManageObjects);
        objectBean = ManageObjects.load(objectBean);
###################

Following error occurs

##################

org.mozilla.javascript.EvaluatorException: "file:/C:/Programme/Apache
Software Foundation/Tomcat
5.5/webapps/cocoon/doccollector/flows/configuration.js", line 13: Failed to
compile Java class de.doccollector.binding.ManageObjects$load:
file:/C:/Programme/Apache Software Foundation/Tomcat
5.5/webapps/cocoon/javaClasses/de/doccollector/binding/ManageObjects.java:
Line 3: The import de.doccollector is never used
file:/C:/Programme/Apache Software Foundation/Tomcat
5.5/webapps/cocoon/javaClasses/de/doccollector/binding/ManageObjects.java:
Line 4: The import java.sql is never used
file:/C:/Programme/Apache Software Foundation/Tomcat
5.5/webapps/cocoon/javaClasses/de/doccollector/binding/ManageObjects.java:
Line 5: The import java.util.Vector is never used
file:/C:/Programme/Apache Software Foundation/Tomcat
5.5/webapps/cocoon/javaClasses/de/doccollector/binding/ManageObjects.java:
Line 6: The import java.util.Iterator is never used
file:/C:/Programme/Apache Software Foundation/Tomcat
5.5/webapps/cocoon/javaClasses/de/doccollector/binding/ManageObjects.java:
Line 8: The public type ManageObjects must be defined in its own file

##########################

I really dont understand this. All importet classes ARE used. Besides the
type ManageObjects IS defined it its own file.

So please help me. I already spent so much time to solve this problem.

1. Are compiles classes from the de.doccollector.* package available to the webapp classpath (jars in WEB-INF/lib/ or classes in WEB-INF/classes/)

2. I have no experience with Class method from flowscript.
You could quickly make your ManageObjects class a singleton and initialise it like:

var manager = new ManageObjects();
objectBean = manager.load(objectBean);

3. You might also consider managing your JDBCConnection() with some pooling mecanism. Opening / closing connection is know to be quite heavy. Some persistence frameworks do that very well for you: Hibernate, iBatis, ... In Cocoon 2.2 you can benefit from Spring integration...

Patrick


Thanks

Niclas




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to