Java EE EJB的理解

时间:2012-09-12 08:33:17

标签: java-ee annotations ejb jdeveloper session-bean

我是使用Java EE开发企业应用程序的新手。我一直在使用jdeveloper。虽然我已经阅读了一些书籍,但我仍然觉得很难理解某些模块的实际用途和好处。

如果你有人能回答关于注释的一些问题(在代码下面写下),那就太好了。

import javax.annotation.Resource;

import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless(name = "StudentWSApiBean", mappedName = "RizwanWS-RizwanService-StudentWSApiBean")
@WebService(name = "StudentWSApi", serviceName = "StudentWSApi", portName = "StudentWSApiPort")
public class StudentWSApiBeanBean implements StudentWSApiBean {
    @Resource
    SessionContext sessionContext;

    @EJB
    StudentSession mySession;

    public StudentWSApiBeanBean() 
    {
    }

    @WebMethod
    public StudentResponse saveStudentInfo(@WebParam(name = "arg0")
        StudentRequest rqst)
    {
        StudentResponse resp = new StudentResponse();
        resp.setStat(0);
        try
        {
            int ret = mySession.saveStudentInfo(rqst.getName(), rqst.getAddr(), rqst.getClass_(), rqst.getGrade());        
            resp.setStat(ret);
        }catch(Exception exc)
        {
        }
        return resp;
    }
}

在上面的代码中,

@EJB
StudentSession mySession;

然后我用,

mySession.saveStudentInfo(rqst.getName(), rqst.getAddr(), rqst.getClass_(), rqst.getGrade()); 

即。我正在使用mySession来访问StudentSession的方法。现在,@EJB注释在这里做的有什么好处我不清楚。

@Resource
SessionContext sessionContext;

除了声明之外,我还没有在代码中的任何地方看到使用sessionContext。 @Resource在这里意味着什么。

2 个答案:

答案 0 :(得分:0)

您已被正确指导阅读一些Java EE教程。

如果需要搜索@Resources构造的名称,可以键入“Java EE资源注入”或“Java EE依赖注入”。没有必要直接回答,因为到处都有大量的阅读。

答案 1 :(得分:0)

在Java EE 5中,您可以使用@EJB之类的注入语句。这简化了开发过程并避免了查找。

在Java EE 5之前,如果要使用EJB,首先要进行查找以获取远程/本地接口,然后再使用它。在Java EE 5中,您可以简单地声明@EJB并将容器注入EJB的引用,您可以直接使用它。

同样的事情是@Resources。

如上所述,有大量书籍和文章表明注射及其益处。