Avatar billede fear Nybegynder
04. marts 2002 - 20:02 Der er 2 kommentarer og
1 løsning

J2EE problem!

I følgende kode laver jeg lookup på en bønne (User), og får en reference.

  private SessionContext sessionContext;
  public transient SessionContext ctx;
  public transient Properties props;
 
  public  UserHome userHome = null;
  public  User user = null;

public void Userlookup() throws RemoteException
  {

    try
    {

      //get naming context
      Context ctx = new InitialContext();

      //look up jndi name
    Object ref = ctx.lookup("User");
   
      //cast to Home interface
userHome = (UserHome) PortableRemoteObject.narrow(ref, UserHome.class);

      }

    catch(Exception e)
          {
          e.printStackTrace();
          }


  }

  }

Mit problem er at jeg vil lave lookup til andre bean, men giver ikke at skrive den samme kode en gang til!
Jeg vil benytte ovenstående metode, til at lave lookup på mange forskellige bean's.

Dvs. at jeg skal skal kunne ændre på følgende ting i ovenstående kode:
userHome,
UserHome og UserHome.class.



Selve JNDI navnet kan man jo bare lave som en variabel:
private String JDNI-name="bean2";
Object ref = ctx.lookup(JNDI-name);


Nogle forslag?






Avatar billede kama Nybegynder
04. marts 2002 - 20:59 #1
Hvis det alligevel er lokale lookups, så vil jeg foreslå at du benytter 2.0-bønner med en session-bønne som facade. Se skabelon nedenfor:

import java.util.*;
import javax.ejb.*;
import javax.ejb.*;
import javax.naming.*;

public class FacadeBean implements SessionBean
{
    private  LocalBean1Home bean1Home = null;
    private  LocalBean2Home bean2Home = null;

    public void ejbCreate() throws CreateException
    {
        try
        {
            bean1Home = lookupBean1();
            bean2Home = lookupBean2();
        }
        catch (NamingException ex)
        {
            throw new CreateException(ex.getMessage());
        }
    }

    public void ejbActivate()
    {
        try
        {
            bean1Home = lookupBean1();
            bean2Home = lookupBean2();
        }
        catch (NamingException ex)
        {
            throw new EJBException(ex.getMessage());
        }
    }

    public void ejbPassivate()
    {
        bean1Home = null;
        bean2Home = null;
    }

    public void ejbRemove() {}
    public void setSessionContext(SessionContext sc) {}

    private LocalBean1Home lookupBean1() throws NamingException
    {
        Context initial = new InitialContext();
        Object objref = initial.lookup("java:comp/env/ejb/Bean1");
        return (LocalBean1Home) objref;
    }

    private LocalBean2Home lookupBean2() throws NamingException
    {
        Context initial = new InitialContext();
        Object objref = initial.lookup("java:comp/env/ejb/Bean2");
        return (LocalBean2Home) objref;
    }
}
Avatar billede bearhugx Nybegynder
04. marts 2002 - 22:44 #2
mon det ikke også kan gøres sådan

userHome = (UserHome)performLookup(UserHome.class, "User");
anotherHome = (AnotherHome)performLookup(AnotherHome.class, "Another");

...... og med metoden ......
public Object performLookup( Class klass, String jndiName )
{
  try
  {
    //get naming context
    Context ctx = new InitialContext();
    //look up jndi name
    Object ref = ctx.lookup(jndiName);
    //cast to Home interface
    return PortableRemoteObject.narrow(ref, klass);
  } catch( Exception ex )
  { ex.printStackTrace();
  }
}

/Søren
Avatar billede fear Nybegynder
05. marts 2002 - 08:45 #3
tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester