I have implemented Freemarker as a template engine that returns html to an xpage via serverside javascript. I’m glad to say this works perfectly ![]()
However, in Freemarker you can extend the template engine by making custom directives that are implemented from a Template interface in a custom class. This also works fine, at least with a simple Hello World example.
Of course I want to extend the template so that it can read Notesdata, and to do that, I need to create a NotesSession. The directive class is instanciated once, and kept around, so I can’t start passing Notes classes around, as they will be recycled.
This guy has a similar problem: http://www-10.lotus.com/ldd/nd85forum.nsf/5f27803bba85d8e285256bf10054620d/2de9170c5553accf8525763a00640cbe?OpenDocument&Highlight=0,createSession
So I either Session==null when extending the AgentBase or I get an “Cannot create session from agent” when using the other methods of creating a session.
So, my question: Does anybody have any clue as to how this could possibly be solved?
I am adding my stacktrace, if you can get any meaning from it.
regards,
Bjørn
28.10.2009 23:11:25 HTTP JVM: NotesException: Cannot create a session from an agent
28.10.2009 23:11:25 HTTP JVM: at lotus.domino.local.Session.checkSecurityManagerExtender(Unknown Source)
28.10.2009 23:11:25 HTTP JVM: at lotus.domino.local.Session.createSession(Unknown Source)
28.10.2009 23:11:25 HTTP JVM: at lotus.domino.NotesFactory.createSession(Unknown Source)
28.10.2009 23:11:25 HTTP JVM: at no.wpc.isite.ResourceDirective.execute(ResourceDirective.java:56)
28.10.2009 23:11:25 HTTP JVM: at freemarker.core.Environment.visit(Environment.java:262)
28.10.2009 23:11:25 HTTP JVM: at freemarker.core.UnifiedCall.accept(UnifiedCall.java:126)
28.10.2009 23:11:25 HTTP JVM: at freemarker.core.Environment.visit(Environment.java:209)
28.10.2009 23:11:25 HTTP JVM: at freemarker.core.MixedContent.accept(MixedContent.java:92)
28.10.2009 23:11:25 HTTP JVM: at freemarker.core.Environment.visit(Environment.java:209)
28.10.2009 23:11:25 HTTP JVM: at freemarker.core.Environment.process(Environment.java:189)
28.10.2009 23:11:25 HTTP JVM: at freemarker.template.Template.process(Template.java:237)
28.10.2009 23:11:25 HTTP JVM: at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
28.10.2009 23:11:25 HTTP JVM: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
28.10.2009 23:11:25 HTTP JVM: at java.lang.reflect.Method.invoke(Method.java:599)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.types.JavaAccessObject.call(JavaAccessObject.java:309)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.types.FBSObject.call(FBSObject.java:153)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:171)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.ASTTree.ASTBlock.interpret(ASTBlock.java:101)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.ASTTree.ASTTry.interpret(ASTTry.java:100)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.std.FunctionObject._executeFunction(FunctionObject.java:234)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.std.FunctionObject.executeFunction(FunctionObject.java:162)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.std.FunctionObject.call(FunctionObject.java:148)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.types.FBSObject.call(FBSObject.java:153)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.ASTTree.ASTCall.interpret(ASTCall.java:171)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.ASTTree.ASTProgram.interpretEx(ASTProgram.java:102)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.JSExpression._interpretExpression(JSExpression.java:438)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.JSExpression.access$1(JSExpression.java:427)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.JSExpression$2.run(JSExpression.java:417)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.JSExpression$2.run(JSExpression.java:1)
28.10.2009 23:11:25 HTTP JVM: at java.security.AccessController.doPrivileged(AccessController.java:284)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.JSExpression.interpretExpression(JSExpression.java:415)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:250)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.jscript.JSExpression.evaluateValue(JSExpression.java:233)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(JavaScriptInterpreter.java:193)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(JavaScriptMethodBinding.java:111)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.component.UIViewRootEx.invokePhaseMethodBinding(UIViewRootEx.java:1419)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.controller.FacesControllerImpl.invokePhaseMethodBinding(FacesControllerImpl.java:440)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.controller.FacesControllerImpl.access$0(FacesControllerImpl.java:431)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.controller.FacesControllerImpl$ViewPhaseListener.afterPhase(FacesControllerImpl.java:485)
28.10.2009 23:11:25 HTTP JVM: at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:218)
28.10.2009 23:11:25 HTTP JVM: at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:257)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:175)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:138)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:131)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:85)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:464)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:673)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:730)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:684)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:453)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:657)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:254)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:259)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:216)
28.10.2009 23:11:25 HTTP JVM: at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:279)