我正在尝试设置PKCS11提供程序来访问智能卡.我在我的系统上安装了一个PKCS11库,并按照Java PKCS#11参考指南中的说明进行操作.在引用中,它们只是创建一个实例,sun.security.pkcs11.SunPKCS11并将配置文件的名称传递给构造函数.当我尝试编译以下代码时
Provider p = new sun.security.pkcs11.SunPKCS11("pkcs11.cfg");
Security.addProvider(p);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
访问限制:由于对所需库的限制,无法访问构造函数SunPKCS11(String)/usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/ext/sunpkcs11.jar
我究竟做错了什么?我在Ubuntu x86下使用Eclipse 3.5和Java SE 1.6.
最好的祝福.
我目前正在考虑"如何设计一个OSGi组件,以便使用jUnit和Mockito等框架轻松编写测试".
由于OSGi强化了DIP (依赖性倒置原则)并且通常存在注入器方法(例如设置器),因此模拟捆绑间依赖性非常容易.
但是捆绑内部依赖呢?
例如,看看这种情况.现在我想将它带入一个OSGi上下文...我们希望在OSGi平台中提供任何类型的网络协议作为声明性服务,并希望编写单元测试来测试直接与之交互的较低网络代码套接字对象.
如果我们将套接字创建重构为一个单独但仍然捆绑的内部POJO (Plain Old Java Object)类,我们应该如何将它注入协议实现?
我使用工厂创建了一个用于创建对象的类.在我的单元测试中,我想访问工厂的返回值.由于工厂直接传递给类,并且没有提供创建对象的getter,我需要拦截从工厂返回对象.
RealFactory factory = new RealFactory();
RealFactory spy = spy(factory);
TestedClass testedClass = new TestedClass(factory);
// At this point I would like to get a reference to the object created
// and returned by the factory.
Run Code Online (Sandbox Code Playgroud)
是否有可能获得工厂的返回值?可能使用间谍?
我能看到的唯一方法是模拟工厂创建方法......
问候
我刚开始使用OSGi和Eclipse RCP.在创建新的eclipse插件项目时,有人可以向我解释"Eclipse"和"Equinox"作为目标平台之间的区别吗?
我仍然知道Equinox是Eclipse的OSGi实现.
我在一些文章中读到eclipse rcp也是基于Equinox.那么您必须在新的Eclipse插件项目中选择目标平台之间的区别在哪里?
最好的祝福
我目前正在尝试获得一个包含Service Factory运行的简单包.
这是我的工厂类:
public class SvcFactory implements ServiceFactory<ServiceB> {
@Override
public ServiceB getService(Bundle bundle,
ServiceRegistration<ServiceB> registration) {
return new ServiceBImpl();
}
@Override
public void ungetService(Bundle bundle, ServiceRegistration<ServiceB> registration,
ServiceB service) {
}
}
Run Code Online (Sandbox Code Playgroud)
这是我应该由工厂创建的服务:
public class ServiceBImpl implements ServiceB {
private ServiceA svcA;
public void setA(ServiceA a) {
svcA = a;
}
}
Run Code Online (Sandbox Code Playgroud)
最后是OSGI-INF/component.xml
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="bundleb.internal.SvcFactory">
<implementation class="bundleb.internal.SvcFactory"/>
<reference bind="setA" cardinality="1..1" interface="bundlea.ServiceA" name="ServiceA" policy="static"/>
<service servicefactory="true">
<provide interface="bundleb.ServiceB"/>
</service>
</scr:component>
Run Code Online (Sandbox Code Playgroud)
如果我在equinox中运行我的测试包(A,B和C),我收到以下错误:
org.osgi.framework.ServiceException: org.eclipse.equinox.internal.ds.FactoryReg.getService() returned a service object that is …Run Code Online (Sandbox Code Playgroud) 我目前正试图通过tycho完成我的构建(~30个捆绑).在我的单元测试中
使用Mockito时遇到了一些令人困惑的问题.
我eclipse-test-plugin为测试包创建了一个as片段项目.由于tycho应该使用清单解析所需的包,我从中删除了对mockito的依赖pom.xml.
然后,当我尝试将mockito添加到清单中所需的包中时,未列出mockito.我找到了这篇文章并创建了一个指向eclipse indigo的目标平台.
我包含了平台细节,所以我不需要eclipse delta包.然后发生了第一件奇怪的事情.Eclipse告诉我有一些不可靠的依赖关系,当我在eclipse中将新创建的目标平台设置为活动时,eclipse不再org.osgi.framework能解决诸如此类的软件包等问题.但是,当我构建一个eclipse-product使用tycho和目标平台时,它正在工作.

如果我将当前的eclipse安装设置为活动平台,则会解析捆绑包.我选择了以下的indigo版本:
所以我的第一个问题是"我的目标平台出了什么问题,以便tycho能够使用它而不是eclipse?"
为了更接近我原来的问题(让mockito运行)我将当前的eclipse安装设置为活动目标平台.然后Eclipse可以解析org.osgi.framework包和其他包.
我pom.xml在上面提到的帖子中再次添加了之前删除的依赖于mockito .但是当我尝试将它添加到清单中所需的包时,我仍然找不到mockito.
所以我的第二个问题是"我做错了什么?你如何引用未在eclipse更新站点发布的包,例如maven中央存储库?"
更新:在我的研究过程中,我发现了两种方法,即在我的目标平台中包含来自非p2-update-sites的 bundle :
eclipse-repository 其中包括所有需要的包.然后将创建的工件部署到公共Web服务器.在您的目标平台中,您可以参考Nexus p2-proxy仓库或Web托管的p2-repo.
有谁知道其他方式 - 可能更方便/更便宜?
请帮助我理解混乱的tycho世界......
提前谢谢
我在J2SE项目中使用JPA + Hibernate和PostGre SQL数据库.
我有2个实体一个和乙.A与B有@OneToMany关系.
在我的域模型一个可能会引用数百万乙的.当我向集合添加新对象时,需要几分钟才能完成.
@OneToMany(cascade=CascadeType.PERSIST)
Collection<B> foo = new ArrayList<B>(); // might contain millions of records
//...
// this takes a lot of time
foo.add(new B());
Run Code Online (Sandbox Code Playgroud)
我认为JPA在插入新对象之前获取整个集合.是否有可能配置关系,以便通过向集合中添加新对象而不执行获取操作?
我想通过Spring Data使用MongoDB的Async Client API访问MongoDB来执行非阻塞数据库查询。
到目前为止,我只看到返回一个
java.util.concurrent.Futurejava.util.concurrent.CompletableFutureorg.springframework.util.concurrent.ListenableFuture和注释与查询方法@Async,例如
公共接口UserRepo扩展了Repository <User,Long> {
@异步
ListenableFuture <User> findByName(String name);
}
但是文档明确指出实际情况[...] query execution will occur in a task that has been submitted to a Spring TaskExecutor。因此,这并不是真正的非阻塞,而是使用无法很好扩展的线程池来解耦我的线程。
因此我的问题是:
如何使用MongoDB异步驱动程序的NIO功能以非阻塞模式执行查询?
到目前为止,我看到的唯一解决方法是摆脱掉Spring Data并使用Mongo Async Driver API自行实现数据库查询。但是希望我只是想念一些东西,并且那里有一个直截了当的答案。;)
假设我们有一个带注释的休息控制器方法:
@PreAuthorize("hasPermission(#username, 'USER_PROFILE', 'WRITE')")
Run Code Online (Sandbox Code Playgroud)
在 Spring MVC 中,我们将实现一个PermissionEvaluator来实现隐藏在以下方法签名后面的授权
boolean hasPermission(
Authentication authentication,
Serializable targetId,
String targetType,
Object permission
)
Run Code Online (Sandbox Code Playgroud)
只要您不需要在 hasPermission 方法中调用反应式服务/方法,这在使用 Spring WebFlux 时似乎仍然有效,我想这种情况很少发生,因为您通常希望为数据库层使用反应式接口以及。如果您无论如何都要在此方法中调用反应式服务,您将需要在某个时间调用block()一些服务Mono,从而遇到麻烦,因为您是从反应式管道中调用的。
在Josh Long关于 Spring WebFlux 安全性的教程中,他解释了如何SecurityWebFilterchain通过提供自定义ReactiveAuthorizationManagers直接在使用路径匹配器上实现授权。但是PreAuthorize在 Spring WebFlux 中没有解释如何使用注解。
我期待实施一些 ReactivePermissionEvaluator
Mono<Boolean> hasPermission(
Authentication authentication,
Serializable targetId,
String targetType,
Object permission
)
Run Code Online (Sandbox Code Playgroud)
这也将允许在实现中使用反应式服务,但我无法找到ReactiveAuthorizationManager可以扫描PreAuthorize注释并将评估分派给反应式的PermissionEvaluator任何实现,ReactivePermissionEvaluator接口也不存在。
所以最后的问题是,如何实现一个PermissionEvaluator允许调用反应式服务的反应式,例如在不阻塞的情况下查询数据库以获取授权信息?
使用Quarkus,有人可以举一个例子,说明服务器和客户端代码如何使用反应式 API 通过 http 下载文件?
到目前为止,我尝试返回 nio ByteBuffers 的 Flux 但似乎不支持:
@RegisterRestClient(baseUri = "http://some-page.com")
interface SomeService {
// same interface for client and server
@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Path("/somePath")
fun downloadFile(): reactor.core.publisher.Flux<java.nio.ByteBuffer>
}
Run Code Online (Sandbox Code Playgroud)
尝试在服务器端返回 Flux 会导致以下异常:
ERROR: RESTEASY002005: Failed executing GET /somePath
org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: kotlinx.coroutines.reactor.FlowAsFlux of media type: application/octet-stream
at org.jboss.resteasy.core.ServerResponseWriter.lambda$writeNomapResponse$3(ServerResponseWriter.java:124)
at org.jboss.resteasy.core.interception.jaxrs.ContainerResponseContextImpl.filter(ContainerResponseContextImpl.java:403)
at org.jboss.resteasy.core.ServerResponseWriter.executeFilters(ServerResponseWriter.java:251)
...
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个 Maven 插件,可以检查 Jar/Class 文件是否符合 Android 指定的 API 级别。例如,所有类和方法都可以在 Android API 中解析吗?
有人知道这样的插件吗?DX 工具似乎没有提供这样的功能,或者我错过了什么?
用例:
我编写了一些 Jar 文件,它们应该在桌面 Java 应用程序以及 Android 应用程序中使用。现在我想确保这些 Jar 文件符合一定级别的 Android API。
我当前的解决方法是在 Android 模拟器中运行单元测试。
java ×9
osgi ×3
maven ×2
mockito ×2
android ×1
download ×1
eclipse-rcp ×1
equinox ×1
hibernate ×1
http ×1
jpa ×1
kotlin ×1
mongodb-java ×1
performance ×1
pkcs#11 ×1
provider ×1
quarkus ×1
reactive ×1
security ×1
smartcard ×1
spring-data ×1
spy ×1
tycho ×1
unit-testing ×1