小编dan*_*anf的帖子

Apache Derby为使用有意义的名称创建的索引提供了奇怪的名称

我正在使用这个ddl在derby中创建一个简单的演示表:

CREATE TABLE MY_TABLE (
    SESSION_ID CHAR(36),
    ATTRIBUTE_NAME VARCHAR(200),
    CONSTRAINT MY_TABLE_PK PRIMARY KEY (SESSION_ID, ATTRIBUTE_NAME),
);
CREATE INDEX MY_TABLE_IX1 ON MY_TABLE (SESSION_ID);
Run Code Online (Sandbox Code Playgroud)

我想在测试中验证INDEX MY_TABLE_IX1是否实际创建.

在线搜索我看到了两种可能的方法:

  1. JDBC - >

    使用DatabaseMetaData我可以做一些事情

    metadata.getIndexInfo(null, "APP", "MY_TABLE", false, false)
    
    Run Code Online (Sandbox Code Playgroud)

    迭代结果集,直到我得到一行

    "MY_TABLE_IX1".equals(resultSet.getString("INDEX_NAME"))
    
    Run Code Online (Sandbox Code Playgroud)
  2. SQL - >

    SELECT c.CONGLOMERATENAME, t.TABLENAME FROM SYS.SYSCONGLOMERATES c 
    JOIN SYS.SYSTABLES t ON c.TABLEID = t.TABLEID 
    WHERE c.CONGLOMERATENAME = 'MY_TABLE_IX1' AND t.TABLENAME = 'MY_TABLE'
    
    Run Code Online (Sandbox Code Playgroud)

撇开显而易见的(比如我也应按列名称过滤,类似的东西),我遇到一个非常奇怪的行为:
Derby将我的一些索引保存为表单的字符串,SQL181215003216931使我无法按名称找到这些索引,而其他索引按我在ddl中指定的名称保存.

虽然我给出了一个小例子,但我的实际模式非常大,如果我运行以下内容:

SELECT c.CONGLOMERATENAME, t.TABLENAME FROM SYS.SYSCONGLOMERATES c 
JOIN SYS.SYSTABLES t ON …
Run Code Online (Sandbox Code Playgroud)

java sql database jdbc derby

8
推荐指数
1
解决办法
160
查看次数

如何使用不可重复的HttpEntity和身份验证挑战?

我正在构建一个客户端,它基本上需要InputStream从需要身份验证的端点发送和检索文件(必须是).

我正在使用我创建的Apache HttpClient,Bearer AuthScheme它使用特定的令牌来处理我们自己的令牌检索流,这些内容围绕以下几行:

@Override
public String getToken(Credentials credentials, HttpRequest request, HttpContext context) {
    return tokenProvider.getToken(getParameters(),
            request.getRequestLine().getMethod(),
            request.getRequestLine().getUri());
}
Run Code Online (Sandbox Code Playgroud)

TokenProvider有望走出去与它自己的要求,从第三方服务得到我的令牌.

现在,我使用InputStreamEntity不可重复的请求创建我的请求,因此第二次请求结束时将失败,流程为:

  1. 第一个请求因404而失败
  2. AuthSchem基于挑战被触发retrieveing所需的令牌
  3. 客户端重做请求,其中失败了 NonRepeatableRequestException

我知道我可以使用一个Repeatable实体并完成它但我们正在讨论非常(非常)大的文件,我不能简单地将它们缓冲到内存中.

我还尝试使用a HttpRequestInterceptor来抢先执行第一个请求并根据它获得的挑战填充令牌缓存但是在我看来这是一个非常难看的流程,同时根据当前请求即将获得的挑战来检索令牌.

我也尝试过使用Jets3t RepeatableRequestEntity,但是我不想在不需要的地方包含依赖项,而且我还没有彻底测试它的性能.

所以我的问题是:其他人如何做到这一点?它不仅仅局限于Bearer身份验证 - 您如何处理InputStream需要基于挑战的身份验证的线路发送?

java authentication apache-httpclient-4.x bearer-token

6
推荐指数
0
解决办法
215
查看次数

如何让Jersey传递格式错误的标题

我正在使用Jersey 1.12并且有一个端点,可能会或可能不会从我无法控制的客户端接收格式错误的标头(例如"Content-Type":"application/json; bla-bla")显然bla-bla格式不正确,因为规范要求参数也有值bla-bla=value,因此Jersey会输出一些东西喜欢

"status": 400,
"message": "Bad Content-Type header value: 'application/json; bla-bla'"
Run Code Online (Sandbox Code Playgroud)

我可以写一个过滤器来处理这里,这里这里的建议,但是我想知道是否有一种方法可以让Jersey 在我对它的价值不感兴趣的情况下一起忽略格式错误的标题?

java rest http jersey jersey-1.0

5
推荐指数
1
解决办法
220
查看次数