Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从EJB会话Bean调用Springbean_Java_Spring_Ejb - Fatal编程技术网

Java 从EJB会话Bean调用Springbean

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

我想从EJB会话bean调用Springbean。下面是我想要实现的一个示例场景

Spring接口: 春豆: EJB接口: EJB会话Bean: (请注意,我在Spring对象上使用了
@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);
    }
}