![](/img/trans.png)
[英]calling EJB3 session bean from a webservice EJB3 session bean causing entity manager null
[英]Calling Spring Bean from the EJB Session Bean
我想从EJB会话Bean调用Spring Bean。 这是我要实现的示例方案。
public interface ReqSpring {
public String processMsg(String msg);
}
@Component
public class ReqStringImpl implements ReqSpring{
public String processMsg(String msg) {
return "Msg ["+msg+"] is processed";
}
}
@Remote
public interface EjbService{
String echo(String msg);
}
(请注意,我已经在Spring对象上使用了@Autowired
)
@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);
}
}
我的应用程序无法从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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.