Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重写CXF LoggingOutinerCeptor中的isBinaryContent()方法_Java_Logging_Cxf_Interceptor_Binary Data - Fatal编程技术网

Java 重写CXF LoggingOutinerCeptor中的isBinaryContent()方法

Java 重写CXF LoggingOutinerCeptor中的isBinaryContent()方法,java,logging,cxf,interceptor,binary-data,Java,Logging,Cxf,Interceptor,Binary Data,我需要扩展CXF用于检查二进制数据的内容类型,并找到了以下答案: 但是,当我尝试实现isBinaryData()方法的重写时: @Override public boolean isBinaryContent(String contentType) { return contentType != null && BINARY_CONTENT_MEDIA_TYPES.contains(contentType) || "myContentType".equals(conte

我需要扩展CXF用于检查二进制数据的内容类型,并找到了以下答案:

但是,当我尝试实现
isBinaryData()
方法的重写时:

@Override
public boolean isBinaryContent(String contentType) {
    return contentType != null && BINARY_CONTENT_MEDIA_TYPES.contains(contentType) || "myContentType".equals(contentType);
}
访问二进制内容媒体类型时出错:

字段AbstractLoggingInterceptor.BINARY\u CONTENT\u MEDIA\u TYPES不可用 可见的

在CXF实现中,此
二进制内容\媒体\类型
通过静态块实现,如开头引用的问题所示。我是否只需重新声明此列表:

private static final List<String> BINARY_CONTENT_MEDIA_TYPES;

static {
    BINARY_CONTENT_MEDIA_TYPES = new ArrayList<String>();
    BINARY_CONTENT_MEDIA_TYPES.add("application/octet-stream");
    BINARY_CONTENT_MEDIA_TYPES.add("image/png");
    BINARY_CONTENT_MEDIA_TYPES.add("image/jpeg");
    BINARY_CONTENT_MEDIA_TYPES.add("image/gif");
}
私有静态最终列表二进制内容媒体类型;
静止的{
二进制内容媒体类型=新ArrayList();
二进制内容媒体类型。添加(“应用程序/八位字节流”);
二进制内容媒体类型。添加(“图像/png”);
二进制内容媒体类型。添加(“图像/jpeg”);
二进制内容媒体类型。添加(“图像/gif”);
}

如果是这样,我可以在列表中添加另一个具有我所需内容类型的条目。

二进制内容媒体类型字段是私有的,不能从子类访问。链接问题中的答案可能来自早期版本的CXF,该列表不是私有的

正如您所说,您可以在列表中重新声明您的内容类型。还可以将逻辑附加到父实现中的现有逻辑:

@Override
protected boolean isBinaryContent(String type)
{
    return super.isBinaryContent(type) || "myContentType".equals(type);
}

如果CXF的未来版本更改了二进制内容媒体类型列表,此实现将自动继承这些更改。如果复制了列表,则必须手动更改实现。

是否可以重新声明最终变量?是的,因为它是私有的。但是您当然可以根据需要命名子类中声明的列表。我们可以知道扩展内容类型的原因吗?现有类型是否不包括您的?