2012-04-09 10 views
0

** EJB3.0とWebsphere 6.1でステートレスセッションBeanを作成できません。EJB3.0とwebsphere6.1でのステートレスセッションBeanの問題

私はすべてをEARファイルにパッケージし、Websphereにデプロイしました。 。 私はステートレスセッションBeanを作成しようと、それはセッションBeanをインスタンス化の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); 
     } 


    } 

問題:2つのコード以上のことから、それはのejbCreateまたはejbActivateメソッドへの呼び出しを行うことはありませんスニペット。 私はロガーを置いて、これらのメソッドを通過するかどうかを確認できるようにしました。

答えて

0

EJB-3.0ステートレスBeanの場合、@PostConstruct & @PreDestroy注釈を使用すると、ライフサイクルコールバックメソッドを使用できます。

これらのメソッドはパブリックである必要があります。戻り値void &パラメータなし。

関連する問題