小编ast*_*pcr的帖子

JAX-RS 使用的无状态 EJB 中的 @Context 注入

我在下面有这样的设置。这是一个简化版本,但我认为它可以理解基本思想。我使用的是 Jersey 2.16、Java 1.8 和 Glassfish Open Source 4.1

public interface IReportService {
    String addNewReport(Report report);
}

@Path("reports")
public class ReportResource implements IReportService {
    /**
    * Service layer.
    */
    @EJB
    private transient ReportService service;

    @POST
    @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    @Produces(MediaType.TEXT_PLAIN)
    @Override
    public String addNewReport(final Report report) {
       return service.addNewReport(report);
    }
}

@Stateless
@LocalBean
public class ReportService implements IReportService {

   @EJB
   private IReportPersistence reportPersistence;

   @Context
   SecurityContext secContext;

   public String addNewReport(final Report report) {
       report.setUserName(secContext.getUserPrincipal().getName());
       reportPersistence.persist(report);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我部署并尝试访问 web 服务时,我从安全上下文中得到一个 NullPointer 异常。似乎根本没有注入 …

java ejb glassfish jax-rs jakarta-ee

4
推荐指数
1
解决办法
4265
查看次数

标签 统计

ejb ×1

glassfish ×1

jakarta-ee ×1

java ×1

jax-rs ×1