Hi,

I am writing a plugin for Confluence which will allow access to PHP
rendering. You can see an overview of the plugin in general here:
http://confluence.atlassian.com/display/CODEGEIST/Scriptix

The plugin (by the nature of Confluence's plugin classloading system)
has it's own classloader separate to that of the webapp where Quercus is
installed. This means that Quercus won't be able to "see" any of the
plugin classes for the purposes of instanciation or getting a Class object.

This is where the problem occurs -- I am injecting ServletState and
ScriptixHelper objects into the script engine for use (exposing
Confluence and custom functionality). When accessing these variables in
PHP I get the following error:

Cause: com.caucho.quercus.QuercusExitException:
'com.adaptavist.confluence.scriptix.ScriptixHelper' class definition not
found at com.caucho.quercus.env.Env.error(Env.java:4042)

Stack Trace: [hide]

com.caucho.quercus.QuercusExitException:
'com.adaptavist.confluence.scriptix.ScriptixHelper' class definition not
found
        at com.caucho.quercus.env.Env.error(Env.java:4042)
        at com.caucho.quercus.env.Env.errorException(Env.java:3741)
        at com.caucho.quercus.env.Env.getJavaClassDefinition(Env.java:2866)
        at com.caucho.quercus.env.Env.wrapJava(Env.java:2987)
        at com.caucho.quercus.env.Env.wrapJava(Env.java:2954)
        at com.caucho.quercus.env.Env.getSpecialRef(Env.java:1817)
        at com.caucho.quercus.env.Env.getRef(Env.java:1557)
        at com.caucho.quercus.env.Env.getValue(Env.java:1334)
        at com.caucho.quercus.expr.VarExpr.eval(VarExpr.java:141)
        at 
com.caucho.quercus.program.EchoStatement.execute(EchoStatement.java:57)
        at
com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
        at
com.caucho.quercus.program.QuercusProgram.execute(QuercusProgram.java:239)
        at
com.caucho.quercus.script.QuercusScriptEngine.eval(QuercusScriptEngine.java:101)
        at
com.caucho.quercus.script.QuercusScriptEngine.eval(QuercusScriptEngine.java:127)
        at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:245)
        at
com.adaptavist.confluence.scriptix.ScriptixRunnerServlet.handleRequest(ScriptixRunnerServlet.java:93)
        at
com.adaptavist.confluence.scriptix.ScriptixRunnerServlet.doGet(ScriptixRunnerServlet.java:40)
[lots more]

The reference javax.script javascript implementation works fine, so I
think it's to do with the way Quercus is handing the variable?

While placing the plugin on the webapp classpath will solve the problem,
it's not an option as this plugin needs to be dynamically uploaded and
updatable.

Thanks for any suggestions that can be offered!


--
Dan Hardiker
Adaptavist.com Ltd


_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to