Merhabalar, geliştirdiğimiz uygulamada, service katmanındaki bir Bean'e aşağıdaki şekilde EntityManager i Inject ediyoruz.

@Inject

EntityManager entityManager

Ve genelde bu servisleri View katmanında ManagedBean'lerin içinde kullanıyoruz. Buraya kadar sorun yok.

Sorun, aynı servisleri yazdığımız Stateles WebService lerin içine Inject edip kullanmak istediğimizde başlıyor. Yukarıdaki şekilde Inject ettiğimiz EntityManager ConversationScoped EntityManager olduğu için aşağıdaki hatayı alıyoruz.

org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.ConversationScoped
    at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:598) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
    at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:71) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
    at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:104) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]

Bu sorunu nasıl giderebiliriz? Aynı servisleri hem View katmanında hemde WebService katmanında nasıl kullanabiliriz?

soruldu: 20 May '13, 09:23

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

Merhabalar,

Entitymanager i produce ettiginiz sinifi görebilirmiyiz?

Selamlar

(23 May '13, 04:24) mahmut_can ♦ mahmut_can's gravatar image

Kusura bakma bukadar geç yazdığım için. EntityManager ürettiğimiz sınıf aşağıdadır.

import javax.enterprise.context.ConversationScoped;

import javax.enterprise.inject.Produces;

import javax.persistence.EntityManagerFactory;

import javax.persistence.PersistenceUnit;

import org.jboss.solder.core.ExtensionManaged;

public class EntityManagerProducer {

@Produces

@ExtensionManaged

@ConversationScoped

@PersistenceUnit(name = "abys")

EntityManagerFactory emf;

}

(29 May '13, 09:09) mceliksoy ♦ mceliksoy's gravatar image

Ayrıca aşağıdaki kod yardımıyla Conversation Context i aktif hale getiriyoruz. Bu şekilde çalışıyor. Ama nadiren, WELD-001304 More than one context active for scope type javax.enterprise.context.ConversationScoped hatası alıyoruz.

        try {
            BoundRequest br = new MutableBoundRequest(new HashMap<String, Object>(), new HashMap<String, Object>());
            InitialContext initialContext = new InitialContext();
            BeanManager bm = (BeanManager) initialContext.lookup("java:comp/BeanManager");
            Map<Class<? extends Annotation>, List<javax.enterprise.context.spi.Context>> contexts = (Map<Class<? extends Annotation>, List<javax.enterprise.context.spi.Context>>) ReflectUtils.getFieldValue(bm, "contexts");
            List<javax.enterprise.context.spi.Context> conversationScope = contexts.get(ConversationScoped.class);
            javax.enterprise.context.spi.Context context = conversationScope.get(0);
            AbstractBoundContext abc = (AbstractBoundContext) context;
            /* FIXME glassfish ile cast hatası veriyor ve çalışmıyor */
            abc.associate(br);
            abc.activate();
        } catch (Exception e) {
            e.printStackTrace();
        }
(29 May '13, 09:15) mceliksoy ♦ mceliksoy's gravatar image
Bu soruya ilk cevap veren sen ol!
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,076
×7
×2

Soruldu: 20 May '13, 09:23

Görüntüleme: 2,289 kez

Son güncelleme: 30 May '13, 02:13

powered by BitNami OSQA