小编seb*_*ian的帖子

查询MongoDB GridFS元数据(Java)

我要做的是通过查询元数据字段来获取GridFS文件列表.例如,我有一个GridFS文件文档,如下所示:

{ "_id" : { "$oid" : "4f95475f5ef4fb269dbac954"} , "chunkSize" : 262144 , "length" : 3077 , "md5" : "f24ea7ac05c5032f08808c6faabf413b" , "filename" : "file_xyz.txt" , "contentType" :  null  , "uploadDate" : { "$date" : "2012-04-23T12:13:19.606Z"} , "aliases" :  null  , "metadata" : { "target_field" : "abcdefg"}}
Run Code Online (Sandbox Code Playgroud)

我想查询包含"target_field"="abcdefg"的所有文件.我创建了如下查询:

BasicDBObject query = new BasicDBObject("metadata", new BasicDBObject("target_field", "abcdefg"));
// gridFS Object Initialization skipped
List<GridFSDBFile> files = gridFs.find(query);
Run Code Online (Sandbox Code Playgroud)

该列表总是空的.否则查询文件名或uploadDate工作正常.是不是可以通过嵌套属性获取GridFS文件?

java mongodb gridfs

10
推荐指数
1
解决办法
1万
查看次数

64位系统上用于Java的串行通信API(调制解调器交互)

我正在寻找Java的串行通信API.非常重要的是64位系统的支持.我用RXTX与64个库Cloudhopper但一些在Windows Server 2008对系统的访问(虚拟)串行端口,当我沉重的问题,JVM崩溃.

主要目的是与模拟调制解调器交互,也许在Java中有另一种调制解调器通信方式?

如果API是免费的,那将是非常好的.

java modem serial-port rxtx 32bit-64bit

6
推荐指数
1
解决办法
1万
查看次数

从嵌入式 OSGi 框架使用 Log4j2

我们使用Apache Felix (version 4.4.1)嵌入式 OSGi 框架。提供框架的主要应用程序用作Log4j2 (version 2.0.1)日志记录框架。log4j-api 和 log4j-core 存在依赖关系。当然,当主应用程序启动时,Log4j2 也会被加载和配置。在主要部分中触发的所有日志消息都会正确写入配置的附加程序。

现在是重点。加载的所有包应该能够使用相同的配置,并且使用与主应用程序相同的 LoggingContext。我试图做的是将所有 Log4j2 包(来自 log4j2-api 和 log4j-core)作为org.osgi.framework.system.packages.extra. 但是,当加载捆绑包时,log4j2 包不会像其他提供的包那样出现在接线包列表中,并且当捆绑包类尝试访问 Log4j2 类时,将引发异常。

所有捆绑包都以相同的方式配置,并且 Log4j2 依赖于 log4j2-api 和 log4j2-core 并提供了范围。当我查看 MANIFEST.MF 时,使用的 Log4j2 包位于该Import-Packages部分内

所以我的问题是。

为什么以这种方式导出 Log4j2 包不起作用?我必须如何配置我的环境,以便我可以在我的包和主应用程序中使用相同的 LoggingContext?

这是我在 java 代码中的 OSGi 框架的配置部分:

Map<String, String> temp = new HashMap<String, String>();
// setting parameter that the felix cache is new initialized on each
// start of the application
temp.put(org.osgi.framework.Constants.FRAMEWORK_STORAGE_CLEAN, "onFirstInit");
// setting …
Run Code Online (Sandbox Code Playgroud)

java logging osgi apache-felix log4j2

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

使用自定义类加载器加载安全类

我们正在创建一个基于 javassist 的自定义类加载器,在加载时修改一些类的字节码。该项目的一部分也是一个包含安全提供程序的签名 jar。

Loader 的初始化如下所示:

private final Loader initLoader(ClassLoader master) {
    final ClassPool pool = ClassPool.getDefault();
    final Loader loader = new Loader(master, pool);
    try {
        loader.addTranslator(pool, new MyTranslator());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return loader;
}
Run Code Online (Sandbox Code Playgroud)

MyTranslator类做了修改,但不关心安全相关的类。的master是系统(父)类加载器。

当应用程序加载相关安全类时,会抛出此异常:

Caused by: java.security.NoSuchProviderException: JCE cannot authenticate the provider EXAMPLE-PROV
    at javax.crypto.JceSecurity.getInstance(JceSecurity.java:100) ~[?:1.8.0_121]
    at javax.crypto.KeyAgreement.getInstance(KeyAgreement.java:230) ~[?:1.8.0_121]
    at my.example.app.security.ExampleKeyAgreement.generateSharedSecret(ExampleKeyAgreement.java:56) ~[?:?]
    ... 22 more
Caused by: java.util.jar.JarException: Class is on the bootclasspath
    at javax.crypto.JarVerifier.verify(JarVerifier.java:286) ~[?:1.8.0_121]
    at javax.crypto.JceSecurity.verifyProviderJar(JceSecurity.java:159) ~[?:1.8.0_121] …
Run Code Online (Sandbox Code Playgroud)

java security classloader javassist

5
推荐指数
0
解决办法
203
查看次数

仅根据 OpenAPI 定义生成 POJO

我已将 Web 服务定义编写为 OpenAPI 文档。我使用的 openapi-generator-maven-plugin 总是生成带有 poms 和 gradle 构建脚本的整个项目,但我只需要 pojos 以及可能生成的 API 客户端。它应该与 JaxB 或 JaxWS 代码生成器同等工作。

那么有没有办法告诉插件只生成Java代码呢?也许还有另一个插件可以完成这项工作?

这是我的配置:

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>5.1.0</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/my-api.yaml</inputSpec>
                <modelPackage>com.my.path.to.api</modelPackage>
                <generatorName>java</generatorName>
                <generateApis>false</generateApis>
                <generateModels>true</generateModels>
                <generateModelDocumentation>false</generateModelDocumentation>
                <generateModelTests>false</generateModelTests>
                <library>vertx</library>
                <configOptions>
                    <sourceFolder>src/main/java</sourceFolder>
                    <dateLibrary>java8</dateLibrary>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

java maven-plugin maven openapi openapi-generator-maven-plugin

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

管理Java服务器应用程序中的多个套接字连接

在我们的新项目中,我们需要实现服务器应用程序.此服务器获取50,000(+)个客户端的连接请求.问题是这些连接必须保持开放并且必须在某处进行管理.该应用程序应该像电话交换机一样工作.因此,它可以获得连接客户端的请求,并且只有在它们也连接时才将它们连接到其他(可能是几个)客户端.使用专有协议.我的问题是:

如何(以及在​​何处)管理开放套接字?我应该把它们放在HashMap中吗?这听起来很好奇.但我没有这么多开放联系的经验.

是否有可用的框架支持此连接要求?

谢谢您的帮助!

java sockets

3
推荐指数
1
解决办法
3965
查看次数

最快的字节数组串联方法

我得到一个包含消息的n部分的映射作为字节数组.在最后一篇文章进入地图后,必须连接消息.我找到了两个应该满足要求的解决方案.第一个是使用System.arraycopy:

public byte[] getMessageBytes() throws IOException {
    byte[] bytes = new byte[0];
    for (final Map.Entry<Short,byte[]> entry : myMap.entrySet()) {
        byte[] entryBytes = entry.getValue();
        byte[] temp = new byte[bytes.length + entryBytes.length];
        System.arraycopy(bytes, 0, temp, 0, bytes.length);
        System.arraycopy(entryBytes, 0, temp, bytes.length, entryBytes.length);
        bytes = temp;
    }
    return bytes;
}
Run Code Online (Sandbox Code Playgroud)

第二个是使用ByteArrayOutputStream:

public byte[] getMessageBytes() throws IOException {
    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    for (final Map.Entry<Short,byte[]> entry : myMap.entrySet()) {
        baos.write(entry.getValue());
    }
    baos.flush();
    return baos.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)

从性能和内存使用角度看,哪种方法更好?是否有另一种方法可以进行更好的连接?

java performance bytearray concatenation

3
推荐指数
1
解决办法
1万
查看次数

使用椭圆曲线加密验证签名

我需要验证包含多个值的消息的签名.我唯一的参数是签名,公钥和值本身.用于创建签名的算法是具有192位的椭圆曲线密码术.我已经尝试在网上找到代码示例,但我没有找到任何针对此案例的内容.

有没有人使用java验证这个算法?您能否提供代码或示例链接?

谢谢您的帮助!

java security jce digital-signature elliptic-curve

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