Chad, Worked perfectly, with or with out the control context on my instantiate call.
Thanks for the solution. This has helped to keep my application structure tidy as this is a requirement for XML Requests / PDF display and a global Cache. Cheers Steven Dalton -----Original Message----- From: Chad Schoettger [mailto:[EMAIL PROTECTED] Sent: Tuesday, 27 March 2007 1:49 AM To: Beehive Users Subject: Re: Programmatically creating controls which access system controls (JDBC) Hi Steve, The reason you are getting the error is because there is not a control container context available for the JDBC controls to acquire resources from. The Beehive distribution includes the ControlFilter servlet filter which can be used to establish a control context for your servlet and controls contained within that servlet. You can find the Java doc for this class at: http://beehive.apache.org/docs/1.0.2/controls/apidocs/javadoc/org/apache /beehive/controls/runtime/servlet/ControlFilter.html You'll need to modify you web.xml to include something like: <filter> <filter-name>ControlFilter</filter-name> <filter-class> org.apache.beehive.controls.runtime.servlet.ControlFilter </filter-class> </filter> <filter-mapping> <filter-name>ControlFilter</filter-name> <url-pattern>*/Myservlet*</url-pattern> </filter-mapping> You man also need to include a control context in your instantiate call, org.apache.beehive.controls.api.bean.Controls.initializeClient( null, rec, ControlThreadContext.getContext() ); Hope this helps, let me know if still not working. - Chad On 3/25/07, Steven Dalton <[EMAIL PROTECTED]> wrote: > Hi All, > > > > I have a problem I hope someone can help me with: > > > > What I'm trying to do is programmatically create controls which access > system controls ie JDBC > > > > I can create the control and I can also access sub controls (non system) > within the parent which are defined declaratively and they work fine. > The problem arises when I try to access a control that requires a > contextual service. IE JDBC. > > > > Is this even possible? > > > > I've tried this from an extension of the XmlHttpRequestServlet (doPost > method) > > > > The ReceivablesControlImpl is a basic control which references a number > of JDBC controls. The error is in the method (viewReceivable) that > calls methods on the JDBC controls. > > > > ReceivablesControlImpl rec = (ReceivablesControlImpl) > java.beans.Beans.instantiate( > > > getClass().getClassLoader(), > > "controls.receivables. ReceivablesControlImpl"); > > > > > org.apache.beehive.controls.api.bean.Controls.initializeClient( null, > rec,null ); > > > > Receivable r = rec.viewReceivable(1L); > > > > gives me: > > > > org.apache.beehive.controls.api.ControlException: Control initialization > failure[org.apache.beehive.controls.api.Con > > trolException: Contextual service > org.apache.beehive.controls.api.context.ResourceContext is not > available] > > at > org.apache.beehive.controls.runtime.bean.ControlBean.ensureControl(Contr > olBean.java:326) > > at > controls.database.receivables.JdbcReceivablesBean.viewReceivable(JdbcRec > eivablesBean.java:251) > > at > controls.receivables.ReceivablesControlImpl.viewReceivable(ReceivablesCo > ntrolImpl.java:60) > > > > Environment: > > Tomcat 5.5 > > Beehive 1.02 > > > > Help would be much appreciated > > > > Thank you, > > > > Steven Dalton > > > >
