小编Mat*_*att的帖子

GWT CssResource中的基本算法

我正在寻找一种方法来做这样的事情:

// style.css
@def borderSize '2px';

.style {
  width: borderSize + 2;
  height: borderSize + 2;
}
Run Code Online (Sandbox Code Playgroud)

其中width和height属性最终的值为4px.

css math gwt cssresource

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

一个缓慢的ActiveMQ消费者导致其他消费者变慢

我正在寻找有关奇怪问题的帮助,其中队列上的慢消费者导致同一队列中的所有其他消费者以30秒的间隔开始消费消息.这是所有消费者,但速度慢的消费者并没有尽快消费消息,而是在消费之前等待一些神奇的30s屏障.

我的应用程序的基本流程如下:

  1. 许多生产者将消息放在一个队列中.消息可以具有不同的JMSXGroupID
  2. 许多消费者在该单个队列上收听消息
  3. 作为标准实践,JMSXGroupID分布在消费者中
  4. 在某些时候,其中一个消费者变得很慢,无法很快处理消息
  5. 慢速消费者最终在代理上填充其预取缓冲区,AMQ认识到它很慢(默认行为)
  6. 在那一点 - 或者某些'随机'但稍后关闭时间 - 除慢速消费者之外的所有消费者开始仅以相同的30秒间隔消费消息
  7. 如果缓慢的消费者再次变得快速,那么事情很快就会恢复正常运行,30秒的障碍就会消失

我对可能导致此问题的原因感到茫然,或者如何修复它,请帮忙.

更多背景和发现

  • 我已经成功地在AMQ 5.8.0,5.9.0(最初发现问题的地方)和5.9.1上可靠地重现了这个问题,关于新安装和现有操作管理安装以及不同机器上的某些vm和一些没有.所有Linux安装,不同的操作系统和Java版本.
  • 它似乎不受任何预取相关的影响,即:将预取值从1更改为10到1000并不能阻止问题发生
  • [red herring?]在amq实例上启用调试日志会显示与定期检查可能过期的消息相关的日志.队列没有到期策略,所以我只能认为预定的expireMessagesPeriod时间只是唤醒amq,然后它会向非慢速消费者发送消息.
  • 如果输入30s模式然后再次输入,则秒 - 时间分钟总是相同的,例如,分钟后的14s和44s.所有消费者和托管这些消费者的所有机器都是如此.重新启动amq后,这些障碍点确实会发生变化.

performance activemq-classic jms

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

如何创建子资源@Path没有前导斜杠的JAX-RS服务

我创建了一个JAX-RS服务(MyService),它有许多子资源,每个子资源都是MySubResource的子类.选择的子资源类是根据MyService路径中给出的参数选取的,例如:

@Path("/") @Provides({"text/html", "text/xml"}) 
public class MyResource {
  @Path("people/{id}") public MySubResource getPeople(@PathParam("id") String id) {
    return new MyPeopleSubResource(id);
  }
  @Path("places/{id}") public MySubResource getPlaces(@PathParam("id") String id) {
    return new MyPlacesSubResource(id);
  }
}
Run Code Online (Sandbox Code Playgroud)

其中MyPlacesSubResource和MyPeopleSubResource都是MySubResource的子类.

MySubResource定义为:

public abstract class MySubResource {
  protected abstract Results getResults();

  @GET public Results get() { return getResults(); }

  @GET @Path("xml") 
  public Response getXml() {
    return Response.ok(getResults(), MediaType.TEXT_XML_TYPE).build();  
  }

  @GET @Path("html") 
  public Response getHtml() {
    return Response.ok(getResults(), MediaType.TEXT_HTML_TYPE).build();  
  }
}
Run Code Online (Sandbox Code Playgroud)

结果由相应的MessageBodyWriters处理,具体取决于响应的mimetype.

虽然这可以产生像/ people/Bob/html或/ people/Bob/xml这样的路径,我真正想要的是/people/Bob.html或/people/Bob.xml

有谁知道如何完成我想做的事情?

java jax-rs path mime-types

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

发布管理 - Maven、Bamboo 和 JIRA

我想找到使用 Maven 2、Bamboo 3.1 和 JIRA 4.3 管理发布的最佳方法。我尝试过很多事情,但由于错误或功能缺失,我总是陷入死胡同。

我的最终目标是让版本来自 JIRA,让 Bamboo 获取这些版本并使用 Maven 从中构建工件,然后将这些工件部署到存储库(在我们的例子中为 Nexus)。

以下是我尝试过的方法:

1)在项目版本的所有pom中使用占位符:

父 pom

<project ...>
  <groupId>group</groupId>
  <artifactId>parent</artifactId>
  <version>${ci.version}</version>
  ...
  <modules>...</modules>
</project>
Run Code Online (Sandbox Code Playgroud)

儿童绒球

<project ...>
  <parent>
    <groupId>group</groupId>
    <artifactId>parent</artifactId>
    <version>${ci.version}</version>
  </parent>
  <artifactId>child</artifactId>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

如果您从项目根 pom 启动构建并-Dci.version=<my-version>在命令行上指定,则会进行构建。将此与Bamboo 发布管理插件结合起来,我可以构建和部署模块的版本并根据需要进行发布。

这种方法的问题是,Maven 在部署或安装时不会替换 poms 中的占位符变量,这意味着存储库中的 poms 具有标记,而${ci.version}我确实希望它们具有具体版本。由于占位符,这意味着没有人可以使用我部署的模块。参见MNG-2971

2)在pom中使用具体的SNAPSHOT版本,并配置bamboo以使用Bamboo发布管理插件执行Maven发布插件

不幸的是,Maven Release Plugin 需要版本来递增,bamboo 插件允许您获取要构建的当前版本的名称,但不能获取下一个版本的名称。如果没有此信息,使用 Maven 发布插件会将版本增加到不受 JIRA 管理的版本。为了使这个选项起作用,我要么需要可用的下一个版本,要么能够在 Bamboo 发布管理插件完成它的事情后运行一个计划(第二个修复也会给提交日志添加额外的混乱,因为你会获得一份用于自动增量的提交和一份用于正确增量的提交)。

2.b) 与 2) 相同,但您必须在通过计划配置界面进行任何发布构建之前指定 Bamboo 中的下一个版本,将该值手动设置为计划应处理的下一个 JIRA 版本。这解决了 2) 的问题,但增加了额外的手动步骤。 …

maven-2 jira release-management bamboo maven-release-plugin

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

罐子MANIFEST.MF最大行长度是否包括EOL字节

我对Manifest规范的理解对于一条线的确切定义有点模糊.特别是读取的部分

任何行都不能超过72字节(不是字符),采用UTF8编码形式.

我不确定这方面的一行是否包含EOL(CR LF | LF | CR)字符.

我有两个编写清单的库的第三方实现,一个生成的内容似乎包含EOL字符作为行的一部分而另一个不包含.

java jar manifest.mf

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