@Provider
public class Api extends GensonContextResolver implements ContainerRequestFilter {
@Context
private UriInfo info;
public static final String AUTHENTICATION_TOKEN = "token";
protected ObjectResponse objectResponse;
protected UsuariosModel userInfo;
public Api() {
}
@Override
public void filter(ContainerRequestContext containerRequest) throws WebApplicationException {
this.objectResponse = new ObjectResponse();
this.userInfo = new UsuariosModel();
UriInfo info = containerRequest.getUriInfo();
// não realiza a valização se o endpoint for o de validação de acesso
if(info.getPath().equals("autenticacao/valida-acesso")) {
return;
}
try {
String token = containerRequest.getHeaderString(AUTHENTICATION_TOKEN);
AutenticacaoController autenticacaoControler = new AutenticacaoController();
this.objectResponse = autenticacaoControler.validaToken(token);
UsuariosController usuariosController = new UsuariosController();
this.userInfo = usuariosController.selecionaDadosUsuario(token);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (this.objectResponse.getMessage() != null) {
Response response = Response.status(this.objectResponse.getCode()).entity(this.objectResponse).build();
containerRequest.abortWith(response);
}
}
}
资源示例
@Path("/descontos")
public class DescontosResource extends Api{
public DescontosResource() {
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response doGet() throws SQLException, NamingException {
DescontosController descontosController = new DescontosController();
this.objectResponse = descontosController.selecionaDescontos();
return Response.status(this.objectResponse.getCode()).entity(this.objectResponse).build();
}
@POST
@Path("clientes")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response doPostClientes(DescontosModel descontos) throws SQLException, NamingException {
DescontosController descontosController = new DescontosController();
this.objectResponse = descontosController.cadastraDescontosClientes(descontos);
return Response.status(this.objectResponse.getCode()).entity(this.objectResponse).build();
}
}
我在这两个链接上找到了答案:
使用JAX-RS和Jersey进行基于REST令牌的身份验证的最佳实践
和
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.sib.resources; com.sib.filters</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.sib.filters.AutenticacaoFilter</param-value>
</init-param>
问题内容: 我正在运行一个Electron项目,一切都很好。但是现在,当我运行package.json中的任何脚本(包括npm start)时,它只是转义了一行而没有执行任何操作。 我的package.json: 我尝试更新NPM,但没有用。当我在其他项目中尝试过时,也不起作用。 提前致谢 问题答案: npm具有配置密钥。它的期望值是布尔值,默认设置为。 可能是由于疏忽而将其设置为。 要/ 的配置
我正在尝试通过NIFI从oracle数据库中提取数据。在画布中,我将文件大小为0 KB的“GenerateFlowFile”处理器安排为每5分钟运行一次。这只是为了在成功时触发“executesql”处理器。对于“executeSQL”,我将DB连接池服务设置为DBCPConnectionPool。我输入SQL查询“select*FROM sometable”。我的DBCPConnectionPo
我有一个< code>Observable链(RxJava 1),我想在Observable完成它的工作时(就在它发出某个东西之前),但在调用任何订户回调之前(我想更新某个< code>AtomicBoolean值,并让所有订户都看到新值),执行一些一次性操作。 以线程安全的方式执行此操作的最佳选择是什么? 我检查了 ,,,但似乎没有关于顺序的保证:我放了一些日志,有时在任何这些方法之前执行第一个
问题内容: 在我的服务器应用程序中,我正在从Java应用程序连接到受Kerberos保护的Hadoop群集。我正在使用HDFS文件系统,Oozie,Hive等各种组件。在应用程序启动时,我确实打电话给 这将返回我的实例,并在应用程序生存期内保留它。当执行特权操作时,我使用启动它们。 这可以正常工作,但我想知道是否以及何时更新kerberos票?我发现了一种似乎在快要到期时都会进行票证更新的方法。我
我已经创建了3个任务。Task3取决于Task1和Task2的结果。在调试代码时,它会正确执行,但在运行应用程序时,Task3会在Task1和Task2完成之前执行。 示例代码: 提前谢谢。
问题内容: 我正在编写一个Maven插件(Mojo),该插件需要在运行之前执行一组标准的其他插件执行。 是否有一种机制可以在插件中声明所有目标,所以我不必依靠用户在其POM中定义所有目标? 问题答案: 您可以通过定义自定义生命周期并在通过注释执行Mojo之前调用该生命周期来做到这一点。 在您的Mojo中,在Javadoc中声明要执行的生命周期: 然后在src / main / resources