我目前正在测试一个新应用程序的osgi(Spring DM).应用程序需要能够侦听文件系统事件.今天我用一个简单的基于时间的轮询器解决了这个问题,但是当Java 7发布时,我可能想用基于NIO2的实现替换它.
到目前为止,我正在查看三个捆绑包,两个用于文件服务实现,另一个用于使用其中一个服务的业务逻辑.这两个实现应该实现相同的接口,所以我的问题是,在哪里放置该接口?将接口放在包含实现的包中会导致服务依赖于其中一个使用者.
什么是最好的,最像osgi的方式来构建它?到目前为止,我最好的办法是创建一个新的"api"包,定义实现的通用接口.
paper.rect(0, 0, settings.width, settings.height, settings.radius);
Run Code Online (Sandbox Code Playgroud)
创建一个带圆角的漂亮矩形.是否可以创建一个只有一个圆角的矩形?
我为我的Web应用程序创建了一个构建系统,它正在重写所有资源URL以包含文件的修订号(以改进客户端缓存).截至今天,我正在为每个文件运行此命令以获取修订号:
hg log --template '{rev}\n' path-to-file
Run Code Online (Sandbox Code Playgroud)
为每个文件执行hg 非常耗时.是否有快速方法列出具有最新版本号的存储库中的所有文件?
Spring Web 3.2附带了一个DeferredResult异步请求处理类.setErrorResult如果出现问题,它可以提供备用响应,但没有提供http错误代码的选项.
当然必须能够控制失败请求的http响应代码.如何使用新的Spring api做到这一点?
我们在开发环境中的Docker容器中运行Graylog2服务器.除了我们每次启动容器时都必须重新创建UDP输入这一事实之外,它就像一个魅力.
有没有人想出一种自动创建Graylog2输入的便捷方法?
我有一个非常简单的休息Web服务返回一个问题列表.当返回的问题数大于零时,此代码按预期工作.但是如果服务器返回一个像[]那样的空json数组,JAXB会创建一个包含一个问题实例的列表,其中所有字段都设置为null!
我是Jersey和JAXB的新手,所以我不知道我是否没有正确配置它或者这是否是一个已知问题.有小费吗?
客户端配置:
DefaultApacheHttpClientConfig config = new DefaultApacheHttpClientConfig();
config.getProperties().put(DefaultApacheHttpClientConfig.PROPERTY_HANDLE_COOKIES, true);
config.getClasses().add(JAXBContextResolver.class);
//config.getClasses().add(JacksonJsonProvider.class); // <- Jackson causes other problems
client = ApacheHttpClient.create(config);
Run Code Online (Sandbox Code Playgroud)
JAXBContextResolver:
@Provider
public final class JAXBContextResolver implements ContextResolver<JAXBContext> {
private final JAXBContext context;
private final Set<Class> types;
private final Class[] cTypes = { Question.class };
public JAXBContextResolver() throws Exception {
this.types = new HashSet(Arrays.asList(cTypes));
this.context = new JSONJAXBContext(JSONConfiguration.natural().build(), cTypes);
}
@Override
public JAXBContext getContext(Class<?> objectType) {
return (types.contains(objectType)) ? context : null;
}
}
Run Code Online (Sandbox Code Playgroud)
客户代码:
public List<Question> getQuestionsByGroupId(int id) …Run Code Online (Sandbox Code Playgroud) @Bean
public TimedRepository timedRepository(RealRepository repo) {
return new TimedRepository(repo, timer); // Adds some metrics
}
@Bean
public RealRepository realRepository(DataSource ds) {
return new RealRepository(ds); // The real jdbc implementation
}
Run Code Online (Sandbox Code Playgroud)
在旧的XML时代,我将真实存储库配置为匿名内部bean.是否可以使用新的Java配置方法执行类似的操作?在timedRepository工厂方法中实例化实际存储库不是一个选项,因为我希望Spring能够获取注释RealRepository.
其动机是避免任何其他bean获取真正的存储库实现.我还应该提到两个bean都实现了一个Repository接口,任何bean都可以根据存储库使用它们(他们不应该知道TimedRepository或者RealRepository.
我正在尝试捕获每个任务执行时写入的输出.当使用--max-workers 1运行Gradle时,下面的代码按预期工作,但是当多个任务并行运行时,下面的代码将获取从同时运行的其他任务写入的输出.
API文档在Task上声明了关于"getLogging"方法的以下内容.从它的内容来看,我判断它应该支持捕获单个任务的输出,而不管同时运行的任何其他任务.
getLogging()返回LoggingManager,它可用于控制此任务的日志记录级别和标准输出/错误捕获.https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html
graph.allTasks.forEach { Task task ->
task.ext.capturedOutput = [ ]
def listener = { task.capturedOutput << it } as StandardOutputListener
task.logging.addStandardErrorListener(listener)
task.logging.addStandardOutputListener(listener)
task.doLast {
task.logging.removeStandardOutputListener(listener)
task.logging.removeStandardErrorListener(listener)
}
}
Run Code Online (Sandbox Code Playgroud)
我是否搞砸了上面代码中的某些内容,还是应该将其报告为错误?
class MyController {
def myAction = {
throw new MyException("Test")
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以捕获/处理上面代码抛出的异常?以下url-mapping有点工作,但它会导致异常被记录,这很烦人,因为在我的情况下我能够处理它.
"500"(controller: "error", action: 'myExceptionHandler', exception: MyException)
Run Code Online (Sandbox Code Playgroud)
为什么我不包装可能在try/catch中引发异常的代码?好吧,我有几个行为可能会抛出相同的异常.在try/catch中包装它们中的每一个都违反了DRY原则.
[WARNING] 'reporting.plugins.plugin.version' for org.apache.maven.plugins:maven-clover-plugin is missing. @ com...
Run Code Online (Sandbox Code Playgroud)
我正在复活一个旧的Maven项目.一些/大多数Maven插件依赖项已经配置了没有版本.除了警告,这有什么后果?Maven是否会尝试查找最新版本,并通过增加构建时间?