Hi Chris, _Probably_ the problem is that the EJB Control need a "container context" to run. Is it possible to add a "container context" to a simple a Java class to use an EJB Control?
Thanks in advance, Max > -----Original Message----- > From: Chris Hogue [mailto:[EMAIL PROTECTED] > Sent: 27 July 2006 21:20 > To: Beehive Users > Subject: Re: EJB Control doesn't work on java class > > This actually looks more problematic than it first appears. > The EJB control (and others) rely on some of the lifecycle > methods like onAcquire and onRelease to get and release their > resources. > > So unfortunately I don't know of a quick answer to that > problem outside of a control container, it will take some > digging. If others have tips on how to accomplish this or > where to look that would be helpful. > > -Chris > > On 7/27/06, Ricci, Massimiliano (HPS C&I, HP-Italy) > <[EMAIL PROTECTED]> wrote: > > Hi Chris, > > > > I'm retyped the code using programmatic and declarative > mechanism to instance the control. > > > > Unfortunately calling the two method (welcomeDeclarative, > welcomeProgrammatic) I'm getting in both case the same exception: > > > > org.apache.beehive.controls.api.ControlException: Control > > initialization failure[Contextual service > > org.apache.beehive.controls.api.context.ResourceContext is not > > available] > > > > Do you have any advice to solve this (two) problems > (declarative (if is possible) and programmatic)? > > > > This is my client class: > > > > package controls; > > > > import org.apache.beehive.controls.api.bean.Control; > > import org.apache.beehive.controls.api.bean.Controls; > > import org.apache.beehive.controls.api.context.ControlThreadContext; > > > > public class Prova { > > > > @Control > > private ProvaSessioBeanCtrl provaSessioBeanCtrl; > > > > public Prova() throws ClassNotFoundException { > > > > try { > > Controls.initializeClient(null, this, null); > > } catch (ClassNotFoundException e) { > > > > e.printStackTrace(); > > } > > } > > > > public String welcomeProgrammatic(String name) { > > String ritorno = "bubububu"; > > try { > > > > ProvaSessioBeanCtrlBean > provaSessioBeanCtrl = (ProvaSessioBeanCtrlBean) Controls > > > .instantiate(ProvaSessioBeanCtrlBean.class, null, > > > ControlThreadContext.getContext(), > > > "provaSessioBeanCtrl"); > > ritorno = > > provaSessioBeanCtrl.welcomeName(name); > > > > } catch (Exception ex) { > > //cnfe.printStackTrace(); > > ritorno = "Exception by > Programmatic: " + ex.toString(); > > } > > return ritorno; > > } > > > > public String welcomeDeclarative(String name) { > > String ritorno = "bububub"; > > try { > > > > ritorno = > provaSessioBeanCtrl.welcomeName(name); > > } catch (Exception cnfe) { > > //cnfe.printStackTrace(); > > ritorno = "Exception by > Declarative: " + cnfe.toString(); > > } > > return ritorno; > > } > > > > } > > > > > -----Original Message----- > > > From: Chris Hogue [mailto:[EMAIL PROTECTED] > > > Sent: mercoledì 26 luglio 2006 16.23 > > > To: Beehive Users > > > Subject: Re: EJB Control doesn't work on java class > > > > > > Hi Max, > > > > > > I'm not sure you can use @Control instantiation in a regular Java > > > class. I don't believe there's anything that triggers the > > > instantiation. When you run in a page flow or another > control those > > > have a "control container" that handles this. > > > > > > Have you tried programmatic instantiation as described here? > > > > > > http://beehive.apache.org/docs/1.0.1/controls/programming.html > > > #Programmatic+Instantiation > > > > > > > > > -Chris > > > > > > > > > On 7/26/06, Ricci, Massimiliano (HPS C&I, HP-Italy) > > > <[EMAIL PROTECTED]> wrote: > > > > Hi folks, > > > > > > > > I'm trying to use Beehive EJB control in my project. > > > > I've done two tests. > > > > In the first one I've created a Session EJB > > > ("ProvaSessionBean") using > > > > IBM Application Server Toolkit (AST), with just one > method (String > > > > welcomeName (String name)), and imported (the jar file) > it on BEA > > > > Workshop 9.2.0 for Weblogic Platform. I've created a new > > > "Dynamic Web > > > > Project" using Beehive facets (Controls & NetUI). By the > > > wizard I've > > > > created an EJB Control (filling the field "JNDI Name" with > > > the value > > > > in META-INF\ibm-ejb-jar-bnd.xmi > > > ("ejb/ejbs/ProvaSessionBeanHome") and > > > > from META-INF\ejb-jar.xml for Home/Business Interface > > > > ("ejbs.ProvaSessionBean" and "ejbs.ProvaSessionBeanHome")). > > > > > > > > In Controller class I've instanced the EJB Control by annotation > > > > (@Control) and call the EJB method in the Controller > method. I've > > > > exported the ear file and deployed it on IBM WebSphere > Application > > > > Server 6.1 In this case all work correctly. > > > > > > > > Then I've tried to use the EJB Control in a normal Java class. > > > > I've imported the EJB (jar) in my project, and created a > > > "Dynamic Web > > > > Project" not using Beehive technology (in particular > Beehive NetUI). > > > > I've imported jar to use EJB Control (beehive-controls.jar, > > > > beehive-ejb-control.jar) and created EJB Control > > > > (ProvaSessioBeanCtrl.java) following the same step > described above. > > > > Then I've created a (simple) Java class (Prova.java) to > > > instance the > > > > control (using annotation @Control) and use EJB method, and > > > a jsp page > > > > where I called this java class. > > > > I've exported the ear file and deployed it on IBM WebSphere > > > > Application Server 6.1. > > > > When I've tested the application a > "java.lang.NullPointerException" > > > > was generated because the EJB Control in java class not was > > > instanced! > > > > I've checked that every class by APT was created (Prova.class, > > > > Prova.controls.properties, ProvaClientInitializer.class, > > > > ProvaSessioBeanCtrl.class, ProvaSessioBeanCtrlBean.class, > > > > ProvaSessioBeanCtrlBean.class.manifest, > > > > ProvaSessioBeanCtrlBeanBeanInfo.class) and all seems correct. > > > > > > > > Have anybody some idea because EJB Control doesn't work on > > > java class? > > > > Is it possibile use Beehive EJB Control (or Beehive Control in > > > > general) in a Java class instead in a PageFlow? > > > > > > > > Thanks in advance, > > > > Max > > > > > > > > > >
