Session EJB3.0和websphere6.1中的无状态会话bean存在问题

Session EJB3.0和websphere6.1中的无状态会话bean存在问题,session,ejb-3.0,javabeans,stateless,Session,Ejb 3.0,Javabeans,Stateless,**我无法使用EJB3.0和websphere6.1创建无状态会话bean 我将所有内容打包到EAR文件中,并将其部署到Websphere上。 我试图创建一个无状态会话bean,并希望它实例化会话bean并调用ejbCreate()** 下面是我的代码和xml文件。 包com.aa.otrs.datacollector.reject.ejb; 导入javax.annotation.Resource; 导入javax.ejb.Stateless; 导入javax.ejb.Timeout; 导入ja

**我无法使用EJB3.0和websphere6.1创建无状态会话bean

我将所有内容打包到EAR文件中,并将其部署到Websphere上。 我试图创建一个无状态会话bean,并希望它实例化会话bean并调用ejbCreate()**

下面是我的代码和xml文件。
包com.aa.otrs.datacollector.reject.ejb;
导入javax.annotation.Resource;
导入javax.ejb.Stateless;
导入javax.ejb.Timeout;
导入javax.ejb.Timer;
导入javax.ejb.TimerService;
导入javax.interceptor.Interceptors;
导入com.aa.otrs.datacollector.logging.DataCollectorLogger;
导入com.aa.otrs.fraudnet.service.FraudNetSoapWrapperService;
导入com.google.inject.inject;
@无国籍
@拦截器(GuiceInterceptor.class)
公共类RejectServiceBean实现IRejectServiceBean{
@注入
专用数据采集器记录器;
@抑制警告(“未使用”)
@注入
私有FraudNetSoapWrapperService fraudnetWebService;
@资源
私人TimerService TimerService;
public void ejbCreate()抛出javax.ejb.CreateException{
debug(“在ejbCreate上”);
debug(“RejectServiceBean”);
}
公共无效ejbActivate(){
logger.debug(“ejbActivate”);
}
}
这是META-INF文件夹下的ibm ejb jar bnd xml文件。
导入javax.ejb.Local;
@本地的
公共接口IRejectServiceBean{
void callingInterface();
}
我已经尝试过实现无状态会话,不管有没有接口和xml文件。
导入com.google.inject.inject;
导入javax.annotation.Resource;
导入javax.ejb.Stateless;
导入javax.ejb.TimedObject;
导入javax.ejb.Timeout;
导入javax.ejb.Timer;
导入javax.ejb.TimerService;
导入javax.interceptor.Interceptors;
导入com.aa.otrs.datacollector.logging.DataCollectorLogger;
导入com.aa.otrs.fraudnet.service.FraudNetSoapWrapperService;
@无国籍
@拦截器(GuiceInterceptor.class)
公共类RejectServiceSessionBean{
@注入
专用数据采集器记录器;
@注入
私有FraudNetSoapWrapperService fraudnetWebService;
public void ejbCreate()抛出javax.ejb.CreateException{
debug(“在ejbCreate上”);
debug(“在RejectServiceSessionBean构造函数中”);
}
公共无效ejbActivate(){
logger.debug(“ejbActivate”);
}
公共类GuiceInterceptor{
私有静态最终注入器Injector=Guice.createInjector(新的EjbEnvironmentModule());
@施工后
@激活后
公共void autowireBean(调用上下文调用上下文){
Object target=invocationContext.getTarget();
注入器。注入器成员(目标);
}
}
问题:从以上两个代码片段中,它从未调用ejbCreate或ejbActivate方法。
我已经放置了日志记录器,以便验证它是否通过了这些方法。

对于EJB-3.0无状态bean,您可以使用
@PostConstruct
&
@PreDestroy
注释使用生命周期回调方法

这些方法必须是公共的,返回void&不带任何参数

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);
       }


    }