2012-04-09 2 views
0

** Я не могу создать сессионный компонент без состояния с EJB3.0 и Websphere 6.1.Проблемы с сессионным компонентом без состояния с EJB3.0 и websphere6.1

Я упаковываю все в файл EAR и размещаю его на Websphere. . Я пытаюсь создать сеансный компонент и ожидая, что экземпляр компонента сеанса и вызвать ejbCreate() **

Following is my code and xml file. 

package com.aa.otrs.datacollector.reject.ejb; 

import javax.annotation.Resource; 
import javax.ejb.Stateless; 
import javax.ejb.Timeout; 
import javax.ejb.Timer; 
import javax.ejb.TimerService; 
import javax.interceptor.Interceptors; 
import com.aa.otrs.datacollector.logging.DataCollectorLogger; 
import com.aa.otrs.fraudnet.service.FraudNetSoapWrapperService; 
import com.google.inject.Inject; 

@Stateless 
@Interceptors(GuiceInterceptor.class) 
public class RejectServiceBean implements IRejectServiceBean{ 

    @Inject 
    private DataCollectorLogger logger; 
    @SuppressWarnings("unused") 
    @Inject 
      private FraudNetSoapWrapperService fraudnetWebService; 
    @Resource 
    private TimerService timerService; 

    public void ejbCreate() throws javax.ejb.CreateException { 
     logger.debug("On ejbCreate"); 
     logger.debug(“RejectServiceBean "); 

    } 

    public void ejbActivate() { 
     logger.debug("ejbActivate"); 
    } 

} 

This is ibm-ejb-jar-bnd xml file under META-INF folder. 

<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee  http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd" 
    version="1.0"> 
    <message-driven name="PnrMessageBean"> 
     <listener-port name="RECLOCATOR.LP" /> 
    </message-driven> 

    <session name="RejectServiceBean"> 
    <interface class="com.aa.otrs.datacollector.reject.ejb.IRejectServiceBean" 
       binding-name="ejblocal:ejb/RejectServiceBean"/> 
    </session> 

</ejb-jar-bnd> 

import javax.ejb.Local; 

@Local 
public interface IRejectServiceBean { 

    void callingInterface(); 
} 

I have tried implementing stateless session with or without interface and xml file. 

import com.google.inject.Inject; 
import javax.annotation.Resource; 
import javax.ejb.Stateless; 
import javax.ejb.TimedObject; 
import javax.ejb.Timeout; 
import javax.ejb.Timer; 
import javax.ejb.TimerService; 
import javax.interceptor.Interceptors; 
import com.aa.otrs.datacollector.logging.DataCollectorLogger; 
import com.aa.otrs.fraudnet.service.FraudNetSoapWrapperService; 


@Stateless 
@Interceptors(GuiceInterceptor.class) 
public class RejectServiceSessionBean { 
    @Inject 
    private DataCollectorLogger logger; 
    @Inject 
    private FraudNetSoapWrapperService fraudnetWebService; 


    public void ejbCreate() throws javax.ejb.CreateException { 
     logger.debug("On ejbCreate"); 
     logger.debug("In RejectServiceSessionBean constructor"); 

    } 
    public void ejbActivate() { 
     logger.debug("ejbActivate"); 
    } 


public class GuiceInterceptor{ 
     private static final Injector injector = Guice.createInjector(new EjbEnvironmentModule()); 

     @PostConstruct 
     @PostActivate 
     public void autowireBean(InvocationContext invocationContext) { 
      Object target = invocationContext.getTarget(); 
      injector.injectMembers(target); 
     } 


    } 

Проблема: Из выше два фрагмента коды он никогда не делает звонки на ejbCreate или метод ejbActivate. Я поместил регистраторы, чтобы проверить, проходит ли он через эти методы.

ответ

0

Для фанатичного EJB-3.0 можно использовать методы обратного вызова жизненного цикла, используя @PostConstruct & @PreDestroy аннотация.

Эти методы должны быть общедоступными, возвращать пустоту & без каких-либо параметров.

Смежные вопросы