Session EJB3.0和websphere6.1中的无状态会话bean存在问题
**我无法使用EJB3.0和websphere6.1创建无状态会话bean 我将所有内容打包到EAR文件中,并将其部署到Websphere上。 我试图创建一个无状态会话bean,并希望它实例化会话bean并调用ejbCreate()**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
下面是我的代码和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);
}
}