我在下面有这样的设置。这是一个简化版本,但我认为它可以理解基本思想。我使用的是 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 异常。似乎根本没有注入 …