Java 从EJB会话Bean调用Springbean
我想从EJB会话bean调用Springbean。下面是我想要实现的一个示例场景 Spring接口: 春豆: EJB接口: EJB会话Bean: (请注意,我在Spring对象上使用了Java 从EJB会话Bean调用Springbean,java,spring,ejb,Java,Spring,Ejb,我想从EJB会话bean调用Springbean。下面是我想要实现的一个示例场景 Spring接口: 春豆: EJB接口: EJB会话Bean: (请注意,我在Spring对象上使用了@Autowired) 我的应用程序未能从EJB加载ReqSpring对象,并且始终生成NullPointerException。知道为什么会发生这种情况吗?您不能像这样将SpringBean注入EJB,因为EJB不是由Spring容器管理的。无论如何,通过使用SpringBeanAutowiringInterce
@Autowired
)
我的应用程序未能从EJB加载
ReqSpring
对象,并且始终生成NullPointerException
。知道为什么会发生这种情况吗?您不能像这样将Spring
Bean注入EJB
,因为EJB
不是由Spring
容器管理的。无论如何,通过使用SpringBeanAutowiringInterceptor
,您将能够做到这一点。尝试使用此批注:
@Stateless(name = "EjbWS", mappedName = "EjbWS")
@WebService(name = "EjbService", portName = "EjbServicePort")
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class EjbServiceBean implements EjbService {
@Autowired
private ReqSpring reqSpring;
public EjbServiceBean() {
}
@WebMethod
public String echo(@WebParam(name="msg")String msg) {
System.out.println("ReqSpring = "+reqSpring);
return reqSpring.processMsg(msg);
}
}
谢谢,但上面说是由以下原因引起的
:java.lang.IllegalStateException:JBAS011048:无法构造组件实例
您的错误可能在其他地方,您可以发布stacktrace吗
@Component
public class ReqStringImpl implements ReqSpring{
public String processMsg(String msg) {
return "Msg ["+msg+"] is processed";
}
}
@Remote
public interface EjbService{
String echo(String msg);
}
@Stateless(name = "EjbWS", mappedName = "EjbWS")
@WebService(name = "EjbService", portName = "EjbServicePort")
public class EjbServiceBean implements EjbService {
=====> @Autowired
=====> private ReqSpring reqSpring;
public EjbServiceBean() {
}
@WebMethod
public String echo(@WebParam(name="msg")String msg) {
// This is printing null
System.out.println("ReqSpring = "+reqSpring);
return reqSpring.processMsg(msg);
}
}
@Stateless(name = "EjbWS", mappedName = "EjbWS")
@WebService(name = "EjbService", portName = "EjbServicePort")
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class EjbServiceBean implements EjbService {
@Autowired
private ReqSpring reqSpring;
public EjbServiceBean() {
}
@WebMethod
public String echo(@WebParam(name="msg")String msg) {
System.out.println("ReqSpring = "+reqSpring);
return reqSpring.processMsg(msg);
}
}