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
> >
> 

Reply via email to