Hepimiz herhangi bir ek açıklama yapmadan basit Java sınıfları kullanıyoruz. Normal bağımsız uygulamada kullandığımızda, örnek oluşturmak ve kullanmak için 'Yeni' anahtar sözcüğünü kullanırız. Nesne yığın üzerinde oluşturulur. Yapılandırılmadıysa, statik üyelerine hala erişebilir veya kullanabilirim.Yaşam döngüsü Basit Java Sınıfı/Nesne EJB kapsayıcısında
Sorum şu, eğer bu basit sınıfı EJB kapsayıcısına dağıtırsam, o zaman ne olur? Stateless
veya Stateful
veya Entity
no'lu notları açıklamamış olursak, konteyner bunu nasıl yönetir? Aşağıda örnek kod bulunmaktadır. POJO burada (ClientCounter) özel bir şey yapar ama sadece örnek içindir:
@Stateless
public class WelcomeBean implements WelcomeBeanRemote {
private ClientCounter pojo = new ClientCounter();
@Override
public void showMessage() {
System.out.println("welcome client");
pojo.increment();
}
}
class ClientCounter {
private int count;
public void increment() {
count++;
}
}
Ve istemcisidir:
public class Client {
public static void main(String []args) {
Properties jndiProps = new Properties();
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.remote.client.InitialContextFactory");
jndiProps.put(Context.PROVIDER_URL,"http-remoting://localhost:8080");
jndiProps.put("jboss.naming.client.ejb.context", true);
jndiProps.put(Context.SECURITY_PRINCIPAL, "admin");
jndiProps.put(Context.SECURITY_CREDENTIALS, "admin");
final String appName = "";
final String moduleName = "EJBProject02";
final String sessionBeanName = "WelcomeBean";
final String viewClassName = WelcomeBeanRemote.class.getName();
Context ctx = new InitialContext(jndiProps);
WelcomeBeanRemote bean =(WelcomeBeanRemote) ctx.lookup(appName+"/"+moduleName+"/"+sessionBeanName+"!"+viewClassName);
bean.showMessage();
System.exit(0);
}
}
Pojo dosyalarının kuruluşuna bir kulağa başvurmalısınız. Nasıl bir araya getirilir ve uygulamanın hangi bölümüne erişim sağlarız? – SacJn
Örnek kod ekledim – gero
Doğru olmayan bir varsayım yapıyorsunuz. Siz ** bu basit sınıfı EJB konteynerine * aktarmayın *. Uygulamanızı bir Java EE uygulama sunucusuna (WildFly, TomEE, Glassfish, vb.) Dağıtın ve tüm EJB'leriniz uygulama sunucunuzdaki EJB konteyneriniz tarafından yönetilecektir. POJO'larınız, ClientCounter'ınız olarak, normal bir Java programında normal bir Java sınıfı olarak classloader tarafından yönetilecektir. @Will Hartung tarafından [bu cevap] 'a (http://stackoverflow.com/a/8088403/1346996) bir göz atın. – aribeiro