Hi,

this time i devolope an leightweight ajax server where the java-serverside and the java-applet shares classes.

(i.e.)
incomming request to class: org.enexus.Tools -> rewrite class (invoke agent)-> send class to applet -> applet call static Tools-method - > agent serialize to XML -> agent XML to Server -> deserialize to reflection call -> call method on server -> serialize result object to XML -> send to applet -> agent deserialize xml to result object -> Tools-method returns result object.


Now, when the applet requests for an server-side-class apperars my server send a rewrited class.
The rewrite have to:
call an invoker-method on applet which becomes all the method parameters, the full-qualified method-name and the method's result-object.

Everything works fine, but i down know how to plug the parameters into the agents-method-parameters.

This code i have written:

     for (int i = 0; i < classMethods.length; i++)
if (!classMethods[i].getName().equals("<init>") && classMethods[i].isPublic()) {

com.sun.org.apache.bcel.internal.classfile.Method m = classMethods[i];
               Type[] argumentTypes = classMethods[i].getArgumentTypes();
               String[] namen = new String[argumentTypes.length];
               for (int j = 0; j < namen.length; j++) {
                   namen[j] = "arg" + j;
               }

               InstructionList instructionList = new InstructionList();
               Type returnType = classMethods[i].getReturnType();
               MethodGen mg = new MethodGen(classMethods[i]
                       .getAccessFlags(), returnType,
                       argumentTypes, namen,
                       classMethods[i].getName(), c.getName(),
                       instructionList, cg.getConstantPool());
               mg.setMaxStack(50);
               InstructionFactory inf = new InstructionFactory(cg);
instructionList.append(inf.createNew(Type.OBJECT)); instructionList.append(inf.createInvoke( "de.enexus.BCELConnector", "callFromApplet", returnType,
                       argumentTypes, Constants.INVOKESTATIC));
// If there is a return value, return it
               instructionList.append(inf.createReturn(returnType));
mg.setMaxStack();
               mg.setMaxLocals();
               cg.addMethod(mg.getMethod());
               System.out.println(mg.getMethod());

           }
       byte[] bytes = cg.getJavaClass().getBytes();
       String string = new String(bytes);
       return string;

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

Reply via email to