小编Dir*_*oys的帖子

在本地发布Gradle快照

这是我的dummy项目build.gradle文件:

apply plugin: 'groovy'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.3'
    compile 'org.slf4j:jcl-over-slf4j:1.7.7'

    testCompile 'junit:junit:4.11'
    testCompile 'org.mockito:mockito-all:1.10.8'
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

artifacts {
    archives sourcesJar
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}
Run Code Online (Sandbox Code Playgroud)

当我运行时gradle clean build -Pversion=1.2.3,这会打包我的所有代码并build/libs/dummy-1.2.3.jar为我创建一个.

我想知道必要的绝对最小 Gradle代码量,以便我可以将我的"虚拟"JAR发布到我的本地Maven缓存(mavenLocal()).此外,这如何与版本控制一起使用?我总是可以为虚拟JAR指定具体版本,但是当我在本地发布时,发布SNAPSHOT版本对我来说更有意义(至少对我而言).我可以gradle clean build -Pversion=0.1.SNAPSHOT,但后来我关心的是其他本地项目是否会拿起最新SNAPSHOT版本.

再说一次:

  1. dummy在本地发布的最低限度代码是什么?
  2. 在本地发布时,以任何方式指定SNAPSHOT …

publishing snapshot gradle maven

8
推荐指数
2
解决办法
6483
查看次数

ZooKeeper食谱和Apache策展人

我试图准确理解Apache ZooKeeper("ZK")解决什么类型的问题,也许他们的食谱页面是最好的起点.

首先,我做了以下假设:

  • ZooKeeper API(Java和C都有)公开了这7种简单方法,然后允许您构建自己的使用模式,称为"ZK Recipes"
  • 然后由您自己使用这些ZK Recipes来解决分布式编程中的问题
  • 或者,您可以使用Apache Curator附带的ZK Recipes,而不是构建您自己的ZK Recipes
  • 无论哪种方式,你都在使用ZK Recipes(再次,自己开发或由Curator提供)来解决分布式计算问题

我相信Apache Kafka就是一个例子,其中Kafka使用ZK创建一个分布式队列(这是列出的ZK食谱之一).因此,如果我的假设是正确的,ZK公开那些API方法,Apache Kafka的创建者直接使用ZK或使用Curator来实现"Queue"ZK Recipe.

如果我上面的任何假设都是错误的,请先纠正我!假设我或多或少走上正轨:

查看ZK食谱列表,我看到以下内容(非详尽无遗):

  • 障碍
  • 领导人选举

为了让我欣赏这些食谱和他们提出的解决方案,我首先需要了解他们解决的问题!我理解锁定来自基本的Java并发,但我只是没有看到"分布式锁定"何时需要的用例.对于领导选举,我所能想到的 - 作为首先需要它的一个用例- 将是你正在构建一个你想要带有内置主/从或主要/辅助功能的应用程序.也许在这种情况下,您可以使用ZK来实现自己的"领导者选举"配方,或者只是使用Curator的Leader Latch开箱即用.至于障碍,我不知道这些与锁有什么不同.所以我问:

  • 我的主/从或主要/次要问题是否是ZK领导人选举方案的准确用例?
  • 什么是分布式锁的例子?它解决了什么问题?
  • 障碍同样:锁和障碍有什么区别?

java apache-zookeeper apache-curator

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

如何列出所有旧版本的Grails插件?

Grails插件的网站似乎只列出所有Grails插件的最新版本.但是,如果我想查看每个插件的其他可用(较旧)版本的列表呢?是否有Grails SDK命令/目标,我可以发出查看旧插件的问题?

我问,因为我正在使用一个插件,其当前的最新版本已经破产,其版本为"2.0-RC2".由于它是候选版本,我想知道最后一个稳定(非RC)版本是什么.

grails version grails-plugin

6
推荐指数
2
解决办法
1006
查看次数

Chef PEM 文件无效或命名错误?

我的系统用户名是,myuser但我试图用一个chef-validator.pem然后一个blah.pem文件引导机器,并收到以下错误消息:

ERROR: Failed to authenticate to https://mychef01 as blah with key
/etc/chef/blah.pem.
Response: Invalid signature for user or client 'blah'
Run Code Online (Sandbox Code Playgroud)

这是否意味着blah.pem文件无效,或者是否意味着它需要匹配我的系统用户名(所以,myuser.pem)?无论哪种方式,根本问题是什么,修复方法是什么?

chef-infra knife

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

Java 到 rsyslog:STDOUT 还是 syslog?

理解rsyslog是,它是一个syslog在Ubuntu机服务器实现常见。

此外,我的理解rsyslog可用于挂钩/捕获STDOUT输出以及标准syslog消息。

最后,我的理解是,rsyslog然后可以将任何捕获的消息(再次来自客户端STDOUTsyslog客户端)转发到另一台服务器,例如日志聚合器或另一台rsyslog服务器等。

所以首先,如果我上面所说的有任何不正确,请首先纠正我对如何syslog/rsyslog工作及其相互关系的理解!

如果我的假设或多或少是正确的,那么给出以下两个选项:

  • 选项#1:登录STDOUT并配置rsyslog以捕获该流并将日志消息转发到远程进程(例如日志聚合器);或者
  • 选项#2:登录syslog并配置rsyslog以捕获它并将日志消息转发到同一个远程进程

鉴于这两个选项,我更喜欢#1,因为:

  • 在本地或从 IDE 运行时,STDOUT将打印到控制台;和
  • 在任何非本地环境中运行时,STDOUT只会被“收集”rsyslog

如果我选择选项 #2,在本地运行时我会失去控制台可见性。

话虽如此,是否有任何安全/性能/其他问题/警告/陷阱从登录到STDOUT会使选项 #2 更具吸引力/可取?如果有,它们是什么?

java logging syslog rsyslog logstash

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

映射来自第三方库的值对象

我有以下实体需要通过Hibernate 注释持久保存到关系数据库:

@Entity
@Table(name="fizzes")
public class Fizz {
    @Id @GeneratedValue
    @Column(name="fizz_id")
    private int id;

    @Column(name="fizz_wooz")
    private String wooz;

    // ??? here I am unsure!
    private Buzz buzz;

    // Constructor, getters/setters down here, etc...
}

public class Buzz {
    private int jupiter;

    private String neptune;

    // Constructor, getters/setters down here, etc...
}
Run Code Online (Sandbox Code Playgroud)

问题Buzz是:

  • 希望它成为自己的实体/表.我希望它是一个"值对象/类型",它被映射到fizzes表(通过向其添加列)
  • Buzz 来自第三方库,因此我无法修改它

因此,我正在寻找的最终结果是表格形式:

[fizzes] table
==============
fizz_id, PRIMARY KEY AUTO INCREMENT
fizz_wooz, NVARCHAR(50) NOT NULL
fizz_buzz_jupiter, INT NOT NULL
fizz_buzz_neptune, …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa

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

如何在 Camel 测试中模拟 AMQP 消费者?

假设我有以下路线:

from(rabbitMQUri)
    .to(myCustomerProcessor)
    .choice()
        .when(shouldGotoA)
            .to(fizz)
        .when(shouldGotoB)
            .to(buzz)
        .otherwise()
            .to(foo);
Run Code Online (Sandbox Code Playgroud)

让我们假设myCustomProcessor的曲调shouldGotoA,并shouldGotoB根据从RabbitMQ的消耗的消息。

我想对 3 个场景进行单元测试:

  1. 一条 " fizz " 消息被消耗并shouldGotoA设置为 true,它执行第一个when(...).
  2. 一条 " buzz " 消息被消耗并shouldGotoB设置为 true,它执行第二个when(...).
  3. 一条“ foo ”消息被消耗并被otherwise()执行。

我的问题是:如何模拟/存根 RabbitMQ 端点,以便路由在生产中正常执行,但我不必将测试实际连接到 RabbitMQ 服务器?我需要某种“模拟消息”生产者。

代码示例或片段将非常有帮助,非常感谢!

java testing mocking apache-camel

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

Java:如何修复挂起的线程?

请注意:我正在使用JClouds标记这一点,因为如果您阅读了整个问题和随后的评论,我相信这可能是JClouds的一个错误或者是对该库的误用.

我有一个可执行的JAR运行,工作一段时间,完成工作而不会抛出任何错误/异常,然后在它应该退出时永远挂起.我使用VisualVM(关注正在运行的线程)对其进行了分析,并且我还在一个日志语句中进行了打印,main()以便在应用程序挂起的位置(在方法结束时)进行打印.这是我的主要方法的最后一部分:

Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for(Thread t : threadSet) {
    String daemon = (t.isDaemon()? "Yes" : "No");
    System.out.println("The ${t.getName()} thread is currently running; is it a daemon? ${daemon}.");
}
Run Code Online (Sandbox Code Playgroud)

当我的JAR执行此代码时,我看到以下输出:

The com.google.inject.internal.util.Finalizer thread is currently running; is it a daemon? Yes.
The Signal Dispatcher thread is currently running; is it a daemon? Yes.
The RMI Scheduler(0) thread is currently running; is it a daemon? Yes.
The Attach Listener thread is currently running; is it a daemon? …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading deadlock jclouds

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

Java证书和密钥库之间的关系

我只是这样使用keytool:

keytool -genkey -keyalg RSA -alias selfsigned -keystore mykeys.jks -storepass password -validity 360 -keysize 2048
Run Code Online (Sandbox Code Playgroud)

......然后回答了它提示我的所有后续问题.这会mykeys.jks在我的本地目录中生成密钥库.

我的问题:这个JKS文件与其中包含的自签名证书的名称之间有什么关系?这意味着,我现在在这个密钥库中有一个名为"mykeys"的SSL证书吗?

额外问题:单个密钥库(JKS文件)内部可以有多个证书吗?如果是这样,我如何添加第二个SSL证书,例如,命名my2ndcert为同一个JKS文件?

java ssl keytool ssl-certificate

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

如何在Bootstrap 3中使用“数字下标”实现Glyphicons?

通常,要将Glyphicon插入Bootstrap 3应用程序中,操作非常简单:

<span class="glyphicon glyphicon-envelope"></span>
Run Code Online (Sandbox Code Playgroud)

但是,在许多应用程序中,通常需要对Glyphicons进行“自定义”,以便它们带有数字上标,如下所示:

在此处输入图片说明

上面的红色/白色“ 5 ”气泡可能表示用户有5条通知。我想知道如何在Bootstrap 3中实现这种“ 数字上标 ”效果。

glyphicons twitter-bootstrap-3

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

Groovy找不到匹配的构造函数?

请注意:虽然这个问题提到了Mongo,但它肯定是一个纯粹的Groovy问题.

我的MyApp#bootstrap方法:

def bootstrap(AppConfiguration config) {
    String h = config.dbHost
    String p = config.dbPort

    println "Mongo is at: ${h}:${p}."

    dao = new MongoDao(host: h, port: p)
}
Run Code Online (Sandbox Code Playgroud)

我的MongoDao班级(片段):

class MongoDao implements BasicDao {
    String dbName
    Mongo mongo
    String host
    String port
    Morphia morphia
    Datastore datastore

    MongoDao(String host, String port) {
        this.dbName = "db_myapp"
        this.mongo = new Mongo(host, port)
        this.morphia = new Morphia()
        this.datastore = morphia.createDatastore(mongo, dbName)

        morphia.mapPackage("myappdb.common")
    }
}
Run Code Online (Sandbox Code Playgroud)

当此bootstrap()方法运行时,我得到以下异常:

Mongo is at: …
Run Code Online (Sandbox Code Playgroud)

syntax groovy mongodb runtimeexception morphia

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