我要做的是通过查询元数据字段来获取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的串行通信API.非常重要的是64位系统的支持.我用RXTX与64个库Cloudhopper但一些在Windows Server 2008对系统的访问(虚拟)串行端口,当我沉重的问题,JVM崩溃.
主要目的是与模拟调制解调器交互,也许在Java中有另一种调制解调器通信方式?
如果API是免费的,那将是非常好的.
我们使用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) 我们正在创建一个基于 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) 我已将 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
在我们的新项目中,我们需要实现服务器应用程序.此服务器获取50,000(+)个客户端的连接请求.问题是这些连接必须保持开放并且必须在某处进行管理.该应用程序应该像电话交换机一样工作.因此,它可以获得连接客户端的请求,并且只有在它们也连接时才将它们连接到其他(可能是几个)客户端.使用专有协议.我的问题是:
如何(以及在何处)管理开放套接字?我应该把它们放在HashMap中吗?这听起来很好奇.但我没有这么多开放联系的经验.
是否有可用的框架支持此连接要求?
谢谢您的帮助!
我得到一个包含消息的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)
从性能和内存使用角度看,哪种方法更好?是否有另一种方法可以进行更好的连接?
我需要验证包含多个值的消息的签名.我唯一的参数是签名,公钥和值本身.用于创建签名的算法是具有192位的椭圆曲线密码术.我已经尝试在网上找到代码示例,但我没有找到任何针对此案例的内容.
有没有人使用java验证这个算法?您能否提供代码或示例链接?
谢谢您的帮助!
java ×8
security ×2
32bit-64bit ×1
apache-felix ×1
bytearray ×1
classloader ×1
gridfs ×1
javassist ×1
jce ×1
log4j2 ×1
logging ×1
maven ×1
maven-plugin ×1
modem ×1
mongodb ×1
openapi ×1
openapi-generator-maven-plugin ×1
osgi ×1
performance ×1
rxtx ×1
serial-port ×1
sockets ×1